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

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

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

Re[4]: 配列宣言方法による違い string()


(過去ログ 35 を表示中)

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

■17877 / inTopicNo.1)  配列宣言方法による違い string()
  
□投稿者/ もんきっき (30回)-(2008/05/02(Fri) 22:09:33)

分類:[.NET 全般] 

質問です。

Dim files() as string

Dim files as string()

の二つの宣言方法に違いはありますか?
あれば、どの点に注意すれば教えていただけませんか
よろしく御願いします
引用返信 編集キー/
■17882 / inTopicNo.2)  Re[1]: 配列宣言方法による違い string()
□投稿者/ 魔界の仮面弁士 (715回)-(2008/05/02(Fri) 22:32:18)
No17877 (もんきっき さん) に返信
> Dim files() as string
> と
> Dim files as string()
> の二つの宣言方法に違いはありますか?

ありません。全く同一の物としてコンパイルされます。

従来バージョンの Visual Basic は前者の構文しか使えなかったので、
昔からの VB ユーザには、前者を好む人も多いようですが、C# なども
併用するユーザには、後者を好む人の方が多いようですね。(私見ですけれども)

言語仕様の面から言えば、
 Dim f(2) As String
とは記述できても、
 Dim f As String(2)
とは記述できないため、個人的には変数側に付ける記法を使って
いますけれども、ぶっちゃけ、どっちでも良いかな、と。(^^;


> あれば、どの点に注意すれば教えていただけませんか
違いが無いので特に注意点もありませんが、強いて言えば、型の方に丸括弧を付ける記法では
“配列宣言”と“コンストラクタ引数”を誤読せぬよう気を付けること…ぐらいでしょうか。

http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_17/vbnet2_17_02.html
引用返信 編集キー/
■17892 / inTopicNo.3)  Re[2]: 配列宣言方法による違い string()
□投稿者/ もんきっき (31回)-(2008/05/03(Sat) 06:20:35)
お忙しいところ、レスありがとうございます。

No17882 (魔界の仮面弁士 さん) に返信
> ありません。全く同一の物としてコンパイルされます。

すっきりしました、ありがとうございます。


ついでにもうひとつ確認したいことがあるのですが
dim HAIRETU as string()
ではHAIRETU(i)が文字列そのものの配列となると思うので
HAIRETU=nothing でメモリは開放されると解釈しています。


dim HAIRETU as list(of string)
の場合は、HAIRETU.clear としても
HAIRETUという順番の記録が白紙になるだけで
中に入った複数の文字列オブジェクトはどこかに残っているのですよね
簡単に中に入った要素もろとも開放する方法はあるのでしょうか




引用返信 編集キー/
■17893 / inTopicNo.4)  Re[3]: 配列宣言方法による違い string()
□投稿者/ 出水 (46回)-(2008/05/03(Sat) 08:51:51)
.NETではメモリの開放漏れって事は、考慮する必要はないです
具体的には「ガベージコレクション」でググってください

>HAIRETUという順番の記録が白紙になるだけで
>中に入った複数の文字列オブジェクトはどこかに残っているのですよね

一応残ってますけど、メモリが足りなくなったら再利用されますので
開放済みと考えて問題ないです
引用返信 編集キー/
■17895 / inTopicNo.5)  Re[4]: 配列宣言方法による違い string()
□投稿者/ もんきっき (32回)-(2008/05/03(Sat) 09:26:26)
2008/05/03(Sat) 09:26:52 編集(投稿者)

No17893 (出水 さん) に返信
> .NETではメモリの開放漏れって事は、考慮する必要はないです
> 具体的には「ガベージコレクション」でググってください

そういうことだったんですね。
すっきりしましたありがとうございます。
解決済み
引用返信 編集キー/
■17896 / inTopicNo.6)  Re[2]: 配列宣言方法による違い string()
□投稿者/ よねKEN (2回)-(2008/05/03(Sat) 09:33:27)
No17882 (魔界の仮面弁士 さん) のコメント
> 言語仕様の面から言えば、
>  Dim f(2) As String
> とは記述できても、
>  Dim f As String(2)
> とは記述できないため、

型に対して()を付ける場合であれば、同様のことをする場合は以下のような記述ができますね。
Dim f As String() = New String(2) {}

No17893 (出水 さん) のコメント
> 一応残ってますけど、メモリが足りなくなったら再利用されますので
> 開放済みと考えて問題ないです

念のために補足しておくと、上記のコメントは、
配列についてだけでなくList(Of String)でも同様です。

つまり、配列の個々の要素にNothingをセットするのと、
List(Of String)でClearメソッドを呼ぶのは役割としてはほぼ同じです。

引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -