C#中声明无主体类的预期用途是什么?
C#无主体类的预期用途
C# 12正式引入了无主体的类(及结构体)声明,这种写法的核心用途主要有两类:
1. 作为标记类型(Marker Class)
这类类不需要任何成员,仅靠类型本身传递语义,常见场景包括:
- 作为泛型参数的标记,区分不同的逻辑分支
- 配合自定义特性做标记,标识特定的代码行为
- 作为空类型载体,用于某些需要占位类型的设计
示例:
// 标记该类型用于订单相关的日志 public class OrderLogMarker;
这种类不需要实例成员,仅靠类型名称就能传递明确的业务或技术语义。
2. 配合主构造函数快速定义极简数据类
你尝试的public class MyClass(int myArg);写法出现警告,是因为没有把构造函数参数转为类的成员。只要给参数加上访问修饰符,编译器就会自动生成对应的属性:
// 自动生成公共的MyArg属性 public class MyClass(public int MyArg);
这种写法比传统的类声明更简洁,适合只需要承载少量数据、不需要额外方法/逻辑的场景——和record class的简化写法类似,但不会自动生成相等性比较、ToString等额外方法,比record更轻量。
补充说明:无主体类默认是非密封、非抽象的,所以你能创建它的实例,但如果类没有任何成员,实例自然没有可调用的属性或方法。
内容的提问来源于stack exchange,提问作者rory.ap
相关产品推荐
相关产品推荐

