新{object} vs {object} = new {object}

时间:2008-11-16 23:25:05

标签: .net vb.net

我只是想知道两个不同的新对象初始化器之间是否有任何区别,或者它只是语法糖。

所以:

Dim _StreamReader as New Streamreader(mystream)

与...不同:

Dim _StreamReader as Streamreader = new streamreader(mystream)

引擎盖下有什么不同吗?还是他们都一样?你喜欢哪一个?

3 个答案:

答案 0 :(得分:14)

在VB.NET中,它们是完全相同的。 As New变体是规范的。

在VB6中,它们的语义实际上是不同的(除了VB6不允许在声明中赋值的明显事实):As New变体将创建一个永远不会是Nothing的对象。相反,运行时将确保在每次访问对象之前始终正确初始化对象。

答案 1 :(得分:2)

这些陈述完全相同。我个人更喜欢“Dim x as New”语法,因为它更简洁。当它没有形成程序差异时,没有理由在同一语句中写入相同的类型名称。它所做的就是让你在键盘上花更多的时间:)

答案 2 :(得分:1)

我不是一个VB人,但据我所知,他们是等同的。根据{{​​3}}:

  

如果你没有指定数据类型,那么   变量采用的数据类型   初始化。如果既不是数据类型也不是   默认情况下,初始化程序存在   数据类型是对象数据类型。如果   你同时指定数据类型和   初始化器,数据类型   初始化程序必须可转换为   数据类型。

我不会传递对首选项的评论,因为我不使用VB(除非在回答语句时)。