C# 没有默认构造函数的默认值

C# 没有默认构造函数的默认值,c#,C#,当省略默认构造函数时,该类型的数据成员如何获取其默认值?如果给定了默认值,那么默认构造函数的用途是什么 class Program { static void Main(string[] args) { Person person = new Person("SomeName"); Console.WriteLine(person.Age); Console.WriteLine(person.FamileName == null);

当省略默认构造函数时,该类型的数据成员如何获取其默认值?如果给定了默认值,那么默认构造函数的用途是什么

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#类都提供了一个“免费”默认构造函数,如果需要,您可以重新定义它。根据定义, 默认构造函数从不接受参数。将新对象分配到内存后,默认 构造函数确保将类的所有字段数据设置为适当的默认值


如果您不想使用构造函数或字段初始化进行不同的指定(属性也是如此),那么对象字段总是使用默认值进行初始化

默认值通常对应于设置为零的所有位(参考类型为null,数字类型为0)

您可以使用构造函数设置其他值:

public Person()
{
    Name = "Sebastian";
}
或初始值设定项:

public string Name { get; set; } = "Sebastian";

如果您不想使用构造函数或字段初始化进行不同的指定(属性也是如此),那么对象字段总是使用默认值进行初始化

默认值通常对应于设置为零的所有位(参考类型为null,数字类型为0)

您可以使用构造函数设置其他值:

public Person()
{
    Name = "Sebastian";
}
或初始值设定项:

public string Name { get; set; } = "Sebastian";
在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);
    }
}
如果只需要指定值或默认值,则不需要构造函数。你可以用上面提到的方法来做。 当我需要做一些额外的任务时,例如数据库连接、设置其他对象等,我通常使用构造函数

链接:

在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);
    }
}
如果只需要指定值或默认值,则不需要构造函数。你可以用上面提到的方法来做。 当我需要做一些额外的任务时,例如数据库连接、设置其他对象等,我通常使用构造函数


链接:

类中的成员将使用默认值初始化。对于引用类型,这是
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
    }
}

在相关说明中,您还应该看到:

类中的成员将使用其默认值进行初始化。对于引用类型,这是
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
    }
}

在相关注释中,您还应该看到:

@EʜsᴀɴSᴀᴊᴊᴀᴅ 0不是
int
@Eʜs的最小值ᴀɴSᴀᴊᴊᴀᴅ 0不是
int
的最小值。