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 关键字。如果您尝试实例化的类型在设计时已知,这很好。例如,如果您只是尝试实例化实现接口但不关心返回对象的具体类型的类型的实例,这可能不合适。

在这种情况下可以使用的设计模式(在设计时类型未知)是工厂方法。初始化工厂方法的方式会影响它返回的对象的类型。

如果一个类没有外部可见的构造函数,那么可能是因为该类的开发人员希望保留在运行时决定他将返回哪种类型的权利。在这种情况下,他一般会提供一个工厂方法(按惯例以 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 回答