为什么我们必须把' ()'当我们想要定义一个新的或数组时,但是当我们设置预定义的值时,我们不必将它放入?这个问题适用于c#,它在VB.NET中没问题 这是一个例子:
C#
class Program
{
static void Main(string[] args)
{
MyClass w = new MyClass();
MyClass w = new MyClass;//this line contain an error
MyClass e = new MyClass() { ss = "" };
MyClass g = new MyClass { ss = "" };
}
}
class MyClass
{
public string ss;
}
VB.NET
Sub Main()
Dim a As my_class = New my_class()
Dim v As my_class = New my_class
Dim b As my_class = New my_class() With {.ss = ""}
Dim n As my_class = New my_class With {.ss = ""}
End Sub
Class my_class
Public ss As String
End Class
答案 0 :(得分:2)
规范说:
对象创建表达式可以省略构造函数参数列表 并附上括号,前提是它包含一个对象或集合 初始化。省略构造函数参数列表并封闭 括号相当于指定一个空参数列表。
这与数组初始值设定项一致:
int[] t = new[] { 1, 2, 3, 4 };
非常有趣的答案在这里:Why are C# 3.0 object initializer constructor parentheses optional?