C# : this() mean after a constructor of struct 是什么

标签 c# struct

<分区>

你能回答吗,: 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# 中的关键字指类的当前实例,也用作扩展方法第一个参数的修饰符。

因为它属于structstruct 的构造函数,所以它实际上是无意义的,什么也不做。在 C# 中,struct 没有无参数构造函数。他们是very similarclass 构造函数,但在以下方面有所不同:

  • 结构不能包含显式无参数构造函数。结构成员会自动初始化为其默认值。
  • 结构不能有以下形式的初始值设定项: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 关键字调用基类的默认或参数化构造函数。

关于C# : this() mean after a constructor of struct 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37193809/

相关文章:

c++ - 尝试传递结构类型的 vector 但没有控制台输出

c - 在递归函数中分配

c# - 从 silverlight 公开和使用 NetTcpBinding

c# - 管理对象状态/设置的模式?

c# - Linq:选择列表包含必须在另一个列表中的属性的对象

go - 在括号中初始化 Go 结构有什么作用?

c# - Dynamics CRM SDK Context.SaveChanges 权限错误

c# - 更改绑定(bind)属性时,ListView 分组不会更新

c# - 我可以在 C# 中重载 "cast from null"运算符吗?

c++ - 如何初始化以结构为值的映射?