你能否回答一下,: this()
在构造函数结构后的含义是什么?
public struct BaseProject
{
public BaseProject(string project)
: this()
{
this.Project = project;
}
public string Project { get; private set; }
}
答案 0 :(得分:3)
: this()
在struct的构造函数后意味着什么?
C#中的this
关键字是指该类的当前实例,也可用作扩展方法的第一个参数的修饰符。
因为它涉及struct
和struct
的构造函数,它实际上没有意义,什么都不做。在 C#中,struct
没有无参数构造函数。它们是very similar到class
个构造函数,但在以下方面有所不同:
因此,结构构造函数之后的: this()
不执行任何操作并且是多余的 - 它可以在没有任何问题的情况下被删除。但是,在struct
构造函数的上下文中,this
关键字works as expected。
<强>类强>
在构造函数之后使用时,它首先在同一个类中调用另一个构造函数 - 在这种特定情况下是无参数构造函数。这可用于初始化对象实例的其他各个部分,因为它们首先被调用。
<强>构造强>
阅读&#34; using constructors&#34;在MSDN上获取更多详细信息。
<小时/> 请考虑以下事项:
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
关键字调用基类的默认或参数化构造函数。
答案 1 :(得分:0)
这意味着它正在调用该类型的parameterless
constructor
。
答案 2 :(得分:0)
构造函数可以通过调用同一对象中的另一个构造函数 使用
this
关键字。
来自Using Constructors (C# Programming Guide)
因此,在您的示例中,当调用接受字符串的构造函数时,首先(隐式)调用无参数构造函数,然后调用构造函数的方法体,该函数接受正在执行的字符串。