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

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

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

StructureにNewは不要か

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

■91459 / inTopicNo.1)  StructureにNewは不要か
  
□投稿者/ ころっけ (1回)-(2019/06/29(Sat) 15:28:45)

分類:[.NET 全般] 

クラスの場合には、インスタンスを生成するために
変数宣言時にNewをつける必要がありますが、

StructureであるPointの場合には
Dim aaa As Point
と定義しても
Dim aaa As New Point
と定義しても違いはないように思います。

これらはどちらを使用して差はないのでしょうか?


引用返信 編集キー/
■91461 / inTopicNo.2)  Re[1]: StructureにNewは不要か
□投稿者/ キングダム (40回)-(2019/06/29(Sat) 18:00:34)
2019/06/29(Sat) 19:12:33 編集(投稿者)

No91459 (ころっけ さん) に返信

> これらはどちらを使用して差はないのでしょうか?

仕様上差はありません

↓こちらにNewつけてもつけなくても同じだよと書かれてます

構造体とクラス (Visual Basic) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/data-types/structures-and-classes


ILを見るとNewをつけたら初期化が2回行われてました
Dim a As New Point()はこれらと同じでした
・Dim a As Point = New Point()
・Dim a As Point = Nothing


引用返信 編集キー/
■91494 / inTopicNo.3)  Re[2]: StructureにNewは不要か
□投稿者/ ころっけ (2回)-(2019/06/30(Sun) 22:20:39)
ありがとうございます。

ところで、ILって中間言語のことでしょうか?
どうやればそれを確認できますか?

引用返信 編集キー/
■91495 / inTopicNo.4)  Re[3]: StructureにNewは不要か
□投稿者/ Hongliang (832回)-(2019/06/30(Sun) 22:51:16)
> ところで、ILって中間言語のことでしょうか?
そうです。Intermediate Language。

> どうやればそれを確認できますか?
ildasm.exeを使えば逆アセンブルできます。
Microsoft SDKの中に入っていますが、手っ取り早くは、スタートメニューのVisual Studioフォルダに開発者コマンドプロンプトというのがあると思うので、そこからildasm.exeを起動できます。
引用返信 編集キー/
■91496 / inTopicNo.5)  Re[1]: StructureにNewは不要か
□投稿者/ WebSurfer (1849回)-(2019/07/01(Mon) 11:30:21)
No91459 (ころっけ さん) に返信

> これらはどちらを使用して差はないのでしょうか?

分類:[.NET 全般] となっていますが、VB.NET の話ですよね。

C# では new 有り無しで違いがあるようです。

構造体の使用 (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/using-structs

"構造体は new 演算子を使用せずにインスタンス化できます。 このような場合、コンストラクターの呼び出し
が行われないため、割り当てがより効率的になります。 ただし、各フィールドは未割り当てのままになり、す
べてのフィールドが初期化されるまではオブジェクトを使用できません。 たとえば、プロパティから値を取得ま
たは設定することができません。"
引用返信 編集キー/

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


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

このトピックに書きこむ