当省略默认构造函数时,该类型的数据成员如何获取其默认值,并且如果它们被赋予默认值,那么首先使用默认构造函数是什么?
class Program
{
static void Main(string[] args)
{
Person person = new Person("SomeName");
Console.WriteLine(person.Age);
Console.WriteLine(person.FamileName == null);
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string FamileName { get; set; }
public Person(string name)
{
Name = name;
}
}
编辑: 这是我读过的一本书,这让我觉得默认构造函数负责给数据成员提供默认值,但似乎我弄错了,这只是我修改这些值的一种方法。我需要,如果我错了,请纠正我。
每个C#类都提供了一个“免费”默认构造函数,您可以根据需要重新定义。根据定义, 默认构造函数永远不会接受参数。将新对象分配到内存后,默认为 构造函数确保将类的所有字段数据设置为适当的默认值
答案 0 :(得分:0)
如果您不使用构造函数或字段初始化(对于属性也是如此),则不会使用默认值来初始化对象字段。
默认值usualy对应于设置为零的所有位(引用类型为null,数字类型为0)。
您可以使用构造函数设置其他值:
public Person()
{
Name = "Sebastian";
}
或初始化程序:
public string Name { get; set; } = "Sebastian";
答案 1 :(得分:0)
在C#中,您可以指定默认值。
class Person
{
public string Name { get; set; } ="Someone";
public int Age { get; set; }
public string FamileName { get; set; }
}
如果要在对象初始化中指定值,可以执行以下操作:
class Program
{
static void Main(string[] args)
{
Person person = new Person { Name= "SomeOne"; Age=16; };
Console.WriteLine(person.Age);
Console.WriteLine(person.FamileName == null);
}
}
如果只需要指定值或默认值,则不需要构造函数。你可以用上面提到的方法做到这一点。 当我需要做一些额外的任务时,我通常使用构造函数,例如数据库连接,设置其他对象等。
答案 2 :(得分:0)
您班级中的成员将使用其默认值进行初始化。对于参考类型,这是null
,对于值类型,它是默认值。在一个对象中成为成员没有什么特别之处 - 如果它们位于一个函数的中间,它们将具有相同的值:
public void Foo()
{
string name; // null
int age; // 0
bool isChild; // false
}
对于默认构造函数,它是确保数据类型安全的好地方。例如,您可能希望将任何引用类型的属性初始化为非空值:
class Widget
{
public string Name { get; set; }
public Widget()
{
Name = string.Empty; // this way someone can call Widget.Name safely
}
}
在相关说明中,您还应该看到:How do you give a C# Auto-Property a default value?