C# 12中的主要构造函数
阅读:40
点赞: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 { get; set; } = age; // 初始化一个读写属性
}
1.3 调用基类构造函数
你还可以使用主要构造函数的参数来调用基类的构造函数。
public class Alumni(string name, int, int 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带来了更简洁、更灵活的类构造方式,同时也需要注意其使用上的一些限制。