需要C#构造函数语法解释
有人能给我解释一下下面的构造函数语法吗。我以前从未在同事的代码中发现过它需要C#构造函数语法解释,c#,constructor,C#,Constructor,有人能给我解释一下下面的构造函数语法吗。我以前从未在同事的代码中发现过它 public Service () : this (Service.DoStuff(), DoMoreStuff()) { } 在这种情况下,必须有第二个构造函数,它将接受两个参数—Service.DoStuff()和domorseuff()的返回值。这两个方法必须是静态方法。它链接到同一类中的另一个构造函数。基本上,任何构造函数都可以使用:this(…)链接到同一类中的另一个构造函数,或者使用:base(…)链接到基类
public Service () : this (Service.DoStuff(), DoMoreStuff())
{ }
在这种情况下,必须有第二个构造函数,它将接受两个参数—
Service.DoStuff()
和domorseuff()
的返回值。这两个方法必须是静态方法。它链接到同一类中的另一个构造函数。基本上,任何构造函数都可以使用:this(…)
链接到同一类中的另一个构造函数,或者使用:base(…)
链接到基类中的构造函数。如果两者都没有,则相当于:base()
链式构造函数在实例变量初始值设定项执行之后,但在构造函数主体之前执行
有关详细信息,请参阅或
作为例子,考虑这个代码:
using System;
public class BaseClass
{
public BaseClass(string x, int y)
{
Console.WriteLine("Base class constructor");
Console.WriteLine("x={0}, y={1}", x, y);
}
}
public class DerivedClass : BaseClass
{
// Chains to the 1-parameter constructor
public DerivedClass() : this("Foo")
{
Console.WriteLine("Derived class parameterless");
}
public DerivedClass(string text) : base(text, text.Length)
{
Console.WriteLine("Derived class with parameter");
}
}
static class Test
{
static void Main()
{
new DerivedClass();
}
}
Main
方法调用DerivedClass
中的无参数构造函数。它链接到DerivedClass
中的单参数构造函数,然后链接到BaseClass
中的双参数构造函数。当基本构造函数完成时,DerivedClass
中的单参数构造函数继续,然后当该构造函数完成时,原始的无参数构造函数继续。因此,输出为:
Base class constructor
x=Foo, y=3
Derived class with parameter
Derived class parameterless
它运行另一个构造函数,在那里传递来自2个静态方法的2个结果。这称为constructor-chaining。谢谢。那么,该语法是否意味着该构造函数链接到此类的默认构造函数并有效地扩展它?谢谢你的链接。将在午餐时检查它们。@CSharpened:否,此构造函数将替换默认构造函数。它链接到具有两个参数的构造函数。看我的例子。好的,再次感谢。现在我知道了它的术语,有了文章等,我将深入阅读。在阅读之前,我只想澄清一下语法是否有效地运行了对基类构造函数(或链中的第一个链接)的调用首先,然后沿着链返回并依次调用每个构造函数,直到链结束?它将首先调用类上的第二个构造函数,然后查看第二个构造函数是否有基调用-如果没有,它将调用base()。