0

これは VB.Net 初心者の質問です。変数を宣言および定義するさまざまな方法に混乱しています。

例を次に示します。

Dim URL As String = http://www.c-sharpcorner.com/default.asp
Dim request As HttpWebRequest = WebRequest.Create(URL)
Dim response As HttpWebResponse = request.GetResponse()
Dim reader As StreamReader = New StreamReader(response.GetResponseStream())

1. 何もしない、2. Create() メソッドを呼び出す、3. Create() 以外のオブジェクトの別のメソッドを呼び出す、4. New ワードを使用する

4

1 に答える 1

0

.Net のほとんどのプリミティブ型 (Int32、String など) には、新しいインスタンスを宣言できるリテラル構文があります。これが利用可能な場合は、おそらく最初の選択肢になるはずです。上記の URL 変数がその例です。

次に選択するのは、おそらく New キーワードでしょう。これは、インスタンス化しようとしている型が設計時にわかっている場合に適しています。これは、たとえば、インターフェイスを実装する型のインスタンスをインスタンス化しようとしているだけで、返されるオブジェクトの具体的な型を気にしない場合には適切ではない可能性があります。

この場合に使用できる設計パターン (設計時にはタイプが不明) はFactory Methodです。ファクトリ メソッドが初期化される方法は、返されるオブジェクトの型に影響を与える可能性があります。

クラスに外部から見えるコンストラクターがない場合、それはおそらく、そのクラスの開発者が実行時に返す型を決定する権利を留保したかったためです。この場合、彼は通常、ファクトリ メソッド (慣例により Create キーワードが前に付けられます) を提供します。メソッドは、インスタンス化しようとしているクラスにあるとは限りませんが、API 内の他のクラスに追加される可能性があります。このクラスには、最初にどの具象クラスを返すかを決定するために必要なコンテキストがあり、次に提供する機能があります。オブジェクトを作成するために必要な依存関係。

要約すると、あなたの意思決定パスはおそらく..

  1. リテラル
  2. コンストラクタ
  3. 工場方式

興味深いことに、DateTime データ型は、VB.Net にはリテラル構文があり、C# にはありません。1999 年 5 月 31 日は、構文 を使用して、VB.Net で DateTime オブジェクトとしてインスタンス化できます#5/31/1993#。C# で同じ日付値をインスタンス化するには、コンストラクターを使用する必要がありますnew DateTime(1999, 5, 31)

于 2010-02-12T12:57:36.523 に答える