你能回答吗,: this()
在struct 的构造函数后面是什么意思?
public struct BaseProject
{
public BaseProject(string project)
: this()
{
this.Project = project;
}
public string Project { get; private set; }
}
What does : this()
mean after a constructor of struct?
this
C# 中的关键字指类的当前实例,也用作扩展方法第一个参数的修饰符。
因为它属于struct
和struct
的构造函数,所以它实际上是无意义的,什么也不做。在 C# 中,struct
没有无参数构造函数。他们是very similar到 class
构造函数,但在以下方面有所不同:
- 结构不能包含显式无参数构造函数。结构成员会自动初始化为其默认值。
- 结构不能有以下形式的初始值设定项:base(参数列表)。
因此,结构构造函数之后的 : this()
什么都不做并且是多余的 - 它可以毫无问题地删除。但是,在 struct
构造函数的上下文中,this
关键字 works as expected .
类
当在构造函数之后使用时,它首先调用同一类中的另一个构造函数 - 在这种特定情况下是无参数构造函数。这可用于初始化对象实例的其他各个部分,因为它们首先被调用。
构造函数
阅读 MSDN 上的“using constructors”了解更多详情。
请考虑以下事项:
public class FooBar
{
public int Number { get; }
public string Name { get; }
public FooBar()
{
Number = 10;
Name = "Pickles";
}
public FooBar(int number) : this()
{
Number = number;
}
public FooBar(int number, string name) : this(number)
{
Name = name;
}
}
var fooBar1 = new FooBar();
var fooBar2 = new FooBar(20);
var fooBar3 = new FooBar(77, "Stackoverflow");
// The following would be true
// fooBar1.Number == 10 and fooBar1.Name == "Pickles"
// fooBar2.Number == 20 and fooBar2.Name == "Pickles"
// fooBar3.Number == 77 and fooBar2.Name == "Stackoverflow"
构造函数上下文中的
this
关键字也可用于(如上所示)调用参数化构造函数。如果要继承,则可以使用
base
关键字调用基类的默认或参数化构造函数。