■99328 / inTopicNo.3) |
Re[1]: list型のインスタンス化について |
□投稿者/ 魔界の仮面弁士 (3306回)-(2022/03/16(Wed) 09:39:04)
|
2022/03/16(Wed) 10:05:24 編集(投稿者)
■No99326 (りー さん) に返信 > @Dim hoge As New List(of String) 本来は、最後に丸カッコを付与して Dim hoge As New List(Of String)() です。引数が 0 個の場合、最後の丸カッコを省略できるということですね。
※VB.NET 2003 の頃は、引数無しの丸カッコを自動削除する仕様になっていましたが 現在のバージョンは、引数無しの丸カッコの自動付与や自動削除は行われません。 (そうした補正機能が既定で Off になっています) http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_17/vbnet2_17_02.html
今回は、List(Of ) を使っている以上、VB2005 以上であることは明確ですね。
> ADim hoge As List(of String) = New List(of String) これは@と同一の結果になります。@はAの糖衣構文です。
あえて = New 形式で記述する場合の主な目的は、 Dim a As IList(Of String) = New List(Of String)() Dim b As IEnumerable(Of String) = New List(Of String)() のように、インスタンスの型と変数の型が違っている場合に使われます。 同一の型の場合はあえて分ける必要もないため、一般的には@の構文が多用されます。
> list型のインスタンス化の際、@とAの違いは何ですか? それが List(Of ) 型であるかどうかによらず、下記の 2 つの構文は完全に同じ意味です。
Dim a As New Hoge() Dim a As Hoge = New Hoge()
なお、下記の構文にした場合は、コンパイルオプション次第で意味が変わってきます。 Dim a = New List(Of String)()
(A) Option Infer On としてコンパイルされていた場合は下記の意味になります。 Dim a As List(Of String) = New List(Of String)() 'ローカル型の推論
(B) Option Infer Off 、かつ、Option Strict Off としてコンパイルされていた場合は下記の意味になります。 Dim a As Object = New List(Of String)() '暗黙の型指定
(C) Option Infer Off 、かつ、Option Strict On としてコンパイルされていた場合は下記の意味になります。 コンパイル時エラー
|
|