.NET 中是否有与 C# 中一样的默认构造函数



我正在学习构造函数,在编程方面仍然有点新手,所以如果我使用任何术语不正确,请提前道歉。我相信我读到的是 C# 中有一个方便的默认构造函数,它允许您像这样在对象初始化中声明属性......

Cat cat = new Cat { Age = 10, Name = "Fluffy" };

但是,我在Unity3D引擎中使用UnityScript,这种语言虽然通常被称为Javascript,但更类似于 JScript.NET。初始化对象时是否有类似于 C# 的默认构造函数可用?

目前我要做的就是初始化对象,然后一次设置一个属性。或者,我可以创建一个可以使用的构造函数,但我只是好奇那里是否已经有一个像 C# 中那样的默认构造函数?

除非Catstruct,否则它可能没有默认的构造函数:这完全取决于类。如果一个类的所有构造函数都采用参数(即没有默认构造函数),则构造

new MyClass { ... }

将是非法的。

请注意,即使对于缺少默认构造函数的类,您也可以使用相同的初始化构造:您所需要的只是调用非默认构造函数,如下所示:

class Cat {
    public string Name {get;set;}
    public string Age {get;set;}
    public Cat(string name) {Name = name;}
}
Cat myCat = new Cat("Fluffy") {Age = 10 };

您询问的内容不称为默认构造函数。它称为对象初始值设定项。

它不会是 .NET 或 Mono 的功能,因为它们不是语言;初始值设定项是语言功能。我尝试在 UnityScript 中使用它们,但它们要么没有实现(我敢打赌),要么它们的语法只是没有记录。

对于您自己的类/结构,

我认为它们通常没有用,但它们对于处理您无法控制源代码的类/结构很有用:

var v = new Vector3 { y = .5F }; // x and z are still zero, the default for floats

如果你能够编写 Vector3,你可以给它一个这样的构造函数:

public Vector3(x = 0, y = 0, z = 0) : this()
{
    this.x = x;
    this.y = y;
    this.z = z;
}

并使用命名参数语法,如下所示:

var v = new Vector3(y: .5F);

给定初始值设定项语法,对于像 Vector3 这样的简单可变结构来说,这样做是没有意义的,但是当您开始使用只读字段和私有设置的属性时,您会发现构造函数更有价值。

相关内容

最新更新