什么';在vb.net中声明为new和as something=new something之间有什么区别?

什么';在vb.net中声明为new和as something=new something之间有什么区别?,vb.net,Vb.net,我见过这样的代码 Dim s as something = new something Dim s as new something 有什么区别?有什么不同吗?我相信你所做的只是把某个东西具体地塑造成某个东西。没有区别。就VB而言,这些签名是相同的。一种是打字少一些:)稍有不同 第一个允许您执行以下操作: Dim s as ParentType = new InheritedType 第二个没有 这种方法的“优点”是,可以有许多与ParentType相关的不同类型,而不会在运行时爆炸。没有区

我见过这样的代码

Dim s as something = new something
Dim s as new something

有什么区别?有什么不同吗?

我相信你所做的只是把某个东西具体地塑造成某个东西。

没有区别。就VB而言,这些签名是相同的。一种是打字少一些:)

稍有不同

第一个允许您执行以下操作:

Dim s as ParentType = new InheritedType
第二个没有


这种方法的“优点”是,可以有许多与ParentType相关的不同类型,而不会在运行时爆炸。

没有区别

您可能会看到一些开发人员更喜欢

Dim s as something = new something
结束

这可能是Vb6的遗留问题(
,因为Vb6中新的
比您想象的要多,并且有严重的副作用)。 这是Vb.Net“修复”的问题之一


只是重申一下,在Vb.Net中,语句是等效的,即两个语句将构建完全相同的IL。

此场景中没有涉及强制转换,这不是要问的问题。不是吗?我已经展示了两者之间的区别,并解释了它允许您做什么。问题是“x=新x”之间的区别是什么。不是“x=新y”。我今天只是勉强走上了战争的道路。昨晚我问了很多问题,人们投票赞成回答一个与被问问题完全不同的问题。你的问题是关于主题的,我只是被其他问题的疯狂蒙蔽了双眼。很抱歉,但在我看来,在回答问题的同时提供额外的相关信息比只回答问题更有价值。问:有可能做“事”吗?答:是的,但这里有一些信息可以让你做出更明智的决定。
Dim s as new something