C# 实例化一个字段变量

C# 实例化一个字段变量,c#,C#,这是一段代码片段 public class CartItemList { //internal list of items and the constructor that instantiates it private List<CartItem> **cartItems**; public CartItemList() { cartItems = new List<CartItem>(); 公共类CartItemList {

这是一段代码片段

public class CartItemList
{
    //internal list of items and the constructor that instantiates it
    private List<CartItem> **cartItems**;
    public CartItemList() {
        cartItems = new List<CartItem>();
公共类CartItemList
{
//项目的内部列表和实例化它的构造函数
私人清单**项目**;
公共项目列表(){
cartItems=新列表();
我想问,在CartItemList()构造函数实例化它之前,是否可以启动cartItemslist构造函数?然后只使用CartItemList的默认构造函数

像这样:

public class CartItemList
{
    //internal list of items and the constructor that instantiates it
    private List<CartItem> cartItems= new List<CartItem>();
    public CartItemList() 
公共类CartItemList
{
//项目的内部列表和实例化它的构造函数
私有列表cartItems=新列表();
公共项目列表()
是的,
类(引用类型)可以有这样的字段初始值设定项。字段初始值设定项在实例构造函数之前运行

如果(且仅当)您自己没有编写任何实例构造函数(并且该类不是静态的),C#编译器将为您创建一个实例构造函数。它将是
公共的
(或者
受保护的
,如果是
抽象的
类),并且将采用零参数



您可以考虑将字段标记为“代码>只读< /代码>,如果它只被分配给初始化器和实例构造函数。您仍然可以<代码>添加> <代码>,>代码>删除< /代码>,>代码>清除>代码>等>代码>列表>代码>,但在构造函数退出后,实例将被固定。

是的,您可以这样做。我已经在你的代码中显示了,我相信它会在构造函数之前运行


我想说的是,这应该是推荐的方法,因为有时人们确实会忘记初始化构造函数中的字段变量,但只有在情况需要时才这样做。

有什么问题吗?您甚至试过运行这段代码吗?还请注意,这不是Javascript,所以不应该被标记为可运行的Javascript代码段。(我编辑了这个问题以删除这些标签并格式化代码。)@JonSkeet谢谢你的评论你是对的问题是我想问一个问题你这个笨蛋,因为你的愚蠢,我不能再问了