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

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

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

New について教えてください

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

■89394 / inTopicNo.1)  New について教えてください
  
□投稿者/ もん (1回)-(2018/11/23(Fri) 13:27:17)

分類:[.NET 全般] 

はじめまして。
VBとかクラスとかよくわかっていないので教えてください。

Dim x As MyClass (1)
x = New MyClass() (2)

よく、こんなコードを見かけます。

(1)の段階でインスタンスは生成されていると思います。
どうして(2)のコードが必要なのでしょうか?
重複していて(2)は不要なのではないかと思っています。

よろしくお願いします。
引用返信 編集キー/
■89395 / inTopicNo.2)  Re[1]: New について教えてください
□投稿者/ Jitta (427回)-(2018/11/23(Fri) 13:55:27)
No89394 (もん さん) に返信
> はじめまして。
> VBとかクラスとかよくわかっていないので教えてください。
> 
> Dim x As MyClass (1)
> x = New MyClass() (2)
> 
> よく、こんなコードを見かけます。
> 
> (1)の段階でインスタンスは生成されていると思います。
> どうして(2)のコードが必要なのでしょうか?
> 重複していて(2)は不要なのではないかと思っています。
> 
> よろしくお願いします。

「言語」という位なので、掲示板で聞いて覚えられるようなものではありません。
2〜3冊の入門用図書を読むことを勧めます。
その人の理解度や知識量によって「良い本」というものは変わります。
実際に本屋に行って立ち読みし、選びましょう。

VB.NET の文法には明るくないのですが、こんなクラスを作ります。

Class MyClass
    Public Sub New()
        System.Diagnostic.Debug.WriteLine("New")
    End Sub
End Class

コンストラクタ、インスタンスを生成したときにデバッグ出力をするだけのクラスです。
このクラスを作成して、

Dim x As MyClass
System.Diagnostic.Debug.WriteLine("Defined")
x = New MyClass()

を実行します。
さて、出力は、

New
Defined
New

となるのか。←あなたの疑問通り、(1)でインスタンスが生成されている。

Defined
New

となるのか。←Dim では宣言されただけでインスタンスは生成されていない。
確かめてください。
なお、

Dim x As New MyClass

もやってみてください。

引用返信 編集キー/
■89396 / inTopicNo.3)  Re[2]: New について教えてください
□投稿者/ もん (2回)-(2018/11/23(Fri) 14:28:23)
Jittaさん

返信ありがとうございます。

言われたことを試してみました。
(1)は単なる型宣言だけで、インスタンスは生成されていないことが理解できました。

> Dim x As New MyClass

こちらは宣言とインスタンス生成が同時にできるのだと理解しました。

以下は余談です。

Diagnostic ではエラーが出たので(情報を検索して) Diagnostics で実行できました。

あと実行結果が見えなかったので、表示メニューの出力を選択することで出力ウィンドウに結果を見ることができました。

問題解決と致します。
ありがとうございました。

No89395 (Jitta さん) に返信
> ■No89394 (もん さん) に返信
>>はじめまして。
>>VBとかクラスとかよくわかっていないので教えてください。
>>
>>Dim x As MyClass (1)
>>x = New MyClass() (2)
>>
>>よく、こんなコードを見かけます。
>>
>>(1)の段階でインスタンスは生成されていると思います。
>>どうして(2)のコードが必要なのでしょうか?
>>重複していて(2)は不要なのではないかと思っています。
>>
>>よろしくお願いします。
>
> 「言語」という位なので、掲示板で聞いて覚えられるようなものではありません。
> 2〜3冊の入門用図書を読むことを勧めます。
> その人の理解度や知識量によって「良い本」というものは変わります。
> 実際に本屋に行って立ち読みし、選びましょう。
>
> VB.NET の文法には明るくないのですが、こんなクラスを作ります。
>
> Class MyClass
> Public Sub New()
> System.Diagnostic.Debug.WriteLine("New")
> End Sub
> End Class
>
> コンストラクタ、インスタンスを生成したときにデバッグ出力をするだけのクラスです。
> このクラスを作成して、
>
> Dim x As MyClass
> System.Diagnostic.Debug.WriteLine("Defined")
> x = New MyClass()
>
> を実行します。
> さて、出力は、
>
> New
> Defined
> New
>
> となるのか。←あなたの疑問通り、(1)でインスタンスが生成されている。
>
> Defined
> New
>
> となるのか。←Dim では宣言されただけでインスタンスは生成されていない。
> 確かめてください。
> なお、
>
> Dim x As New MyClass
>
> もやってみてください。
解決済み
引用返信 編集キー/
■89397 / inTopicNo.4)  Re[3]: New について教えてください
□投稿者/ Jitta (428回)-(2018/11/23(Fri) 14:48:52)
No89396 (もん さん) に返信
> Diagnostic ではエラーが出たので(情報を検索して) Diagnostics で実行できました。

おおっと、失礼しました。

解決済み
引用返信 編集キー/

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


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

このトピックに書きこむ