C#.NET:为什么新对象需要()

本文关键字:NET 对象 为什么 新对象 | 更新日期: 2023-09-27 18:32:28

为什么当我们想要定义一个新的或数组时,我们必须输入'()',但在设置预定义值时我们不必放它?? 这个问题是针对 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

C#.NET:为什么新对象需要()

规范说:

对象创建表达式可以省略构造函数参数列表 并用括号括起来,前提是它包括对象或集合 初始 化。省略构造函数参数列表并封闭 括号等效于指定空参数列表。

这与数组初始值设定项一致:

int[] t = new[] { 1, 2, 3, 4 }; 

非常有趣的答案在这里:为什么 C# 3.0 对象初始值设定项构造函数括号是可选的?