c# - C# 中的构造函数和初始化器

标签 c# .net constructor

<分区>

Possible Duplicate:
What's the difference between an object initializer and a constructor?

在 C# 中,您可以构造一个对象,如:

public class MyObject{

     int val1;
     int val2;

     public MyObject(int val1, val2){
           this.val1 = val1;
           this.val2 = val2;
     }
}

与:

MyObject ob = new MyObject(1,2);

或与:

MyObject ob = new MyObject(){ val1 = 1, val2 = 2 };

那种构造函数有什么区别?

最佳答案

MyObject ob = new MyObject(){ val1 = 1, val2 = 2 };

只是

的语法糖(即速记)
MyObject ob = new MyObject();
ob.val1 = 1;
ob.val2 = 2;

两者的一个区别是你可以设置readonly来自构造函数的字段,但不是使用速记。

第二个区别是带有参数的构造函数会强制客户端提供这些值。参见 Constructor-injection vs. Setter injection了解一些背景知识。

关于c# - C# 中的构造函数和初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717814/

相关文章:

c# - 如何在 C# 中逐字迭代字符串?

c# - 根据另一个下拉列表中的选择填充下拉列表

C# CLR/编译问题

c# - 以编程方式将标签添加到 Windows 窗体(标签的长度?)

c++ - 通过基类自动进行窗口编程

javascript - 销毁构造函数实例

c# - .NET 应用程序的最佳调度程序?

c# - ASP.Net 平台是独立的吗?

c# - 实现一个按钮来执行文件菜单项的操作

java - 无法初始化嵌套 Fragment,因为它在旋转上是抽象的