Pau*_*els 5 .net c# vb.net vb6
使用以下sytax是否有任何开销:
Form1 myForm = new Form1();
myForm.Show();
Run Code Online (Sandbox Code Playgroud)
相反:
Form1 myForm;
myForm = new Form1();
myForm.Show();
Run Code Online (Sandbox Code Playgroud)
当我学习VB6时,我被告知在VB中使用quivelent有一个开销 - 在.NET中也是如此吗?
.Net没有区别.
但在VB6中As New是邪恶的.它有一个特殊的含义:它创建了一个自动实例化变量.你永远不会得到这些变量的空引用异常.VB6运行时将自动为您创建对象的新实例.
Dim x As New Foo
x.Bar = 10 ' creates a new Foo '
Set x = Nothing ' destroys the first Foo'
x.Bar = 20 ' NO ERROR - creates a second Foo '
Run Code Online (Sandbox Code Playgroud)
大多数有思想的程序员认为这种行为是邪恶的:我们避免As New像瘟疫一样.
但在VB.Net(和C#)中,Dim x As New Foo和之间没有区别Dim x As Foo: Set x = New Foo