C#类构造函数的默认值问题

Ger*_*ldo 11 c#

我有以下课程:

public class Topic
    {
        public string Topic { get; set; }
        public string Description { get; set; }
        public int Count { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我想在使用以下内容创建类时始终将Count设置为零:

var abc = new Topic {
  Topic = "test1",
  Description = "description1"
}
Run Code Online (Sandbox Code Playgroud)

我对构造函数有点困惑.这是可能的,还是在创建abc时需要指定主题,描述和计数?

Ode*_*ded 15

an的默认值为int0.

所有值类型都有默认值,因为它们不能null.

请参阅此MSDN页面上的初始化值类型.


Bal*_*a R 11

你有几个不同的选择.

1)int默认为零,因此如果你不初始化它将为零.

2)您可以使用构造函数

public Topic(){ Count = 0;}
Run Code Online (Sandbox Code Playgroud)

3)您可以使用支持字段而不是auto-property并将其初始化为零

 private int _count = 0;
 public int Count {
    get  {return _count}
    set {_count = value; }
 }
Run Code Online (Sandbox Code Playgroud)


Gra*_*mas 7

Count将默认为0初始化,因为它是值类型而不能null.


Edg*_*lez 5

以下习语不仅是构造函数:

var abc = new Topic {
  Topic = "test1",
  Description = "description1"
}
Run Code Online (Sandbox Code Playgroud)

它是一个构造函数和一个对象初始值设定项。

真正发生的是new Topic()首先调用它,因此将所有值初始化为其默认值(属性 Topic 为 null,Description 为 null,Count 为 0)。之后,将值“test1”分配给Topic,将值“description1”分配给Description。

所有值类型都有一个不同于 null 的默认值(因为它们不能为 null),并且引用类型默认为 null。