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

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

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

Re[3]: list型のインスタンス化について


(過去ログ 172 を表示中)

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

■99326 / inTopicNo.1)  list型のインスタンス化について
  
□投稿者/ りー (1回)-(2022/03/16(Wed) 09:20:33)

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

こんにちは

list型のインスタンス化の際、@とAの違いは何ですか?

@Dim hoge As New List(of String)

ADim hoge As List(of String) = New List(of String)
引用返信 編集キー/
■99327 / inTopicNo.2)  Re[1]: list型のインスタンス化について
□投稿者/ WebSurfer (2456回)-(2022/03/16(Wed) 09:38:53)
No99326 (りー さん) に返信
> こんにちは
>
> list型のインスタンス化の際、@とAの違いは何ですか?
>
> @Dim hoge As New List(of String)
>
> ADim hoge As List(of String) = New List(of String)

書き方が違うだけで、List(of String) のインスタンスを生成して、それへの参照を変数 hoge に代入
するのは同じです。

以下のような書き方もあります。

Dim hoge As List(Of String)
hoge = New List(Of String)

参考
New 演算子 (Visual Basic)
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/new-operator
引用返信 編集キー/
■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 としてコンパイルされていた場合は下記の意味になります。
 コンパイル時エラー
引用返信 編集キー/
■99329 / inTopicNo.4)  Re[2]: list型のインスタンス化について
□投稿者/ りー (3回)-(2022/03/16(Wed) 09:54:26)
No99327 (WebSurfer さん) に返信
> ■No99326 (りー さん) に返信
>>こんにちは
>>
>>list型のインスタンス化の際、@とAの違いは何ですか?
>>
>>@Dim hoge As New List(of String)
>>
>>ADim hoge As List(of String) = New List(of String)
>
> 書き方が違うだけで、List(of String) のインスタンスを生成して、それへの参照を変数 hoge に代入
> するのは同じです。
>
> 以下のような書き方もあります。
>
> Dim hoge As List(Of String)
> hoge = New List(Of String)
>
> 参考
> New 演算子 (Visual Basic)
> https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/new-operator
ありがとうございます!
解決済み
引用返信 編集キー/
■99330 / inTopicNo.5)  Re[3]: list型のインスタンス化について
□投稿者/ りー (4回)-(2022/03/16(Wed) 09:57:54)
No99328 (魔界の仮面弁士 さん) に返信
ご丁寧な説明ありがとうございました。
同一の型の場合はあえて分ける必要もないんですね。
知らなかったです。
これからは、@を使用するように気を付けます。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -