C# 12中的主要构造函数

发布:2024-09-05 21:57 阅读:13 点赞:0

一、什么是主要构造函数?

在C# 12中,主要构造函数是一种新的构造函数编写方式,它可以使你的代码更简洁、易读。

1.1 如何工作?

1.1.1 写入位置

你可以在类或结构体名称后面的括号内直接编写主要构造函数。

1.1.2 参数使用

在主要构造函数中定义的参数可以在整个类或结构体中使用。

例如,你可以这样声明一个带有主要构造函数的类:

public class Student(string name, int age)
{
    // 主要构造函数参数在此作用域内
}

1.2 初始化属性

主要构造函数的参数不是公共属性,但可以用来初始化公共属性。

public class Student(string name, int age)
{
    public string Name { get; } = name; // 初始化一个只读属性
    public int Age { getset; } = age; // 初始化一个读写属性
}

1.3 调用基类构造函数

你还可以使用主要构造函数的参数来调用基类的构造函数。

public class Alumni(string name, intint age, string school) : Student(name, age)
{
    public string School { get; } = school;
}

在这个例子中:

  • Student 是一个带有主要构造函数的类,它接受 name 和 age 作为参数。
  • 这些参数用于设置 Name 和 Age 属性的值。

二、为什么要使用主要构造函数?

2.1 减少代码量

你不需要编写单独的构造方法。

2.2 提高代码清晰度

更容易看出创建类需要什么。

三、重要注意事项

如果你使用了主要构造函数,除非你自己添加,否则该类将没有默认的无参数构造函数。

四、一些限制

4.1 字段存储

主要构造函数参数不会存储为字段,除非它们被需要。这意味着它们不会消耗内存或影响类型的大小。

4.2 类型成员

主要构造函数参数不是类型的成员。这意味着你不能使用 this 或 base 访问它们,也不能在属性参数或默认参数值中使用它们。

4.3 属性赋值

主要构造函数参数可以被赋值,但它们不是属性。这意味着它们没有 getter 或 setter,也不支持属性或修饰符。

4.4 可见性

主要构造函数参数只在声明它们的类型中可用。这意味着派生类型不会继承它们,也不会对外部调用者可见。

4.5 构造函数调用

类的每个其他构造函数都必须直接或间接地通过 this() 构造函数调用来调用主要构造函数。这确保了主要构造函数参数总是被赋值并在类型中可用。

通过以上介绍,我们可以看到主要构造函数为C# 12带来了更简洁、更灵活的类构造方式,同时也需要注意其使用上的一些限制。