Fly*_*wat 16 .net c# constructor constructor-chaining
我时不时地碰到我以前见过的语法,但从未使用过.这是其中一次.
有人可以按照C#构造函数方法解释":this"或":base"的用途吗?
例如:
public MyClass(SomeArg arg) : this(new SomethingElse(), arg)
{
}
Run Code Online (Sandbox Code Playgroud)
我的直觉是它用于将默认参数映射到另一个构造函数方法.
MrK*_*urt 19
你基本上是对的. this()在当前实例上调用构造函数,在当前实例上base()调用超类型的构造函数.它们通常用于处理构造函数重载,因此您可以添加其他选项而不会将内容分解为单独的方法.
Jul*_*iet 19
你的直觉是对的.该语法用于在同一个类中调用重载的构造函数:
public class Test
{
public Test() : this("Called from default constructor") { }
public Test(String msg)
{
Console.WriteLine(msg);
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码:
public static void Main(String[] args)
{
Test t1 = new Test();
Test t2 = new Test("Called from Main function");
}
Run Code Online (Sandbox Code Playgroud)
输出以下内容
Called from default constructor Called from main function
同样,: base(someParams)用于调用基础构造函数.