C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

配列の要素と要素数のクリアについて

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■100467 / inTopicNo.1)  配列の要素と要素数のクリアについて
  
□投稿者/ ピップ (1回)-(2022/08/17(Wed) 12:56:29)

分類:[VB.NET/VB2005 以降] 

VisualSutdio2019でVB.NETを学んでいます。

もの凄く初歩的なことなのかもしれませんが、1次元配列の要素と要素数をクリアしたいです。

Dim arr() As String
で宣言した配列に対し、
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
と内容が入ったものに対し、

Array.Clear(arr, 0, arr.Length)

で配列の要素をクリア

この時点で「要素」はクリアされたという認識ですが、「要素数」は「3」のままの認識で合ってますでしょうか

さらにそこから要素数をクリアする方法が分からない状況です。

教えていただけないでしょうか。

よろしくお願いいたします
引用返信 編集キー/
■100468 / inTopicNo.2)  Re[1]: 配列の要素と要素数のクリアについて
□投稿者/ 魔界の仮面弁士 (3449回)-(2022/08/17(Wed) 13:20:01)
No100467 (ピップ さん) に返信
> Dim arr() As String
> で宣言した配列に対し、
> arr(0) = "A"

変数 arr の初期値は Nothing なので、
各要素に代入する前に
 ReDim arr(2)
あるいは
 arr = New String(2) {}
などと書いておかねば、NullReferenceException になりますよ。


> この時点で「要素」はクリアされたという認識ですが、
>「要素数」は「3」のままの認識で合ってますでしょうか
あっています。


> Array.Clear(arr, 0, arr.Length)
この処理の実行結果は
 For n = 0 To arr.Length - 1
  arr(n) = Nothing
 Next
に相当します。
Array.Clear の方が、ループよりも効率が良いというだけで。



> さらにそこから要素数をクリアする方法が分からない状況です。
Array.Clear を事前に呼ぶ必要はないですよ。

配列そのものを破棄するなら「Erase arr」または「arr = Nothing」とするだけですし、
そもそもメソッド内で宣言されたローカル変数であれば、殆どの場合、
意図的に破棄する必要もありません。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ