类与对象
class 定义、字段/属性、访问修饰符、对象初始化器
类与对象
C# 的 class 是引用类型——对象分配在堆上,变量存储的是引用。struct 是值类型,分配在栈上。
学完本章你将: 掌握 class 定义、字段/属性、访问修饰符、对象初始化器。
基本类定义
csharp
public class Student
{
// 字段(通常 private)
private string name;
private int age;
// 构造函数
public Student(string name, int age)
{
this.name = name;
this.age = age;
}
// 方法
public void Introduce()
{
Console.WriteLine($"我叫{name},{age}岁");
}
}
// 使用
var s = new Student("小明", 20);
s.Introduce();
对象初始化器
csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
// 不用构造函数也能初始化
var p = new Person
{
Name = "小明",
Age = 25,
City = "北京",
};
// C# 12+ 集合表达式
List<int> nums = [1, 2, 3, 4, 5];
访问修饰符
| 修饰符 | 范围 |
|---|---|
| public | 任何地方 |
| private | 仅本类(默认) |
| protected | 本类 + 派生类 |
| internal | 同一程序集 |
| protected internal | 同一程序集 或 派生类 |
| private protected | 同一程序集中的派生类 |
class vs struct
csharp
// class:引用类型,堆分配,可为 null
class PointClass { public int X, Y; }
// struct:值类型,栈分配,不能为 null(除非 Nullable)
struct PointStruct { public int X, Y; }
// record:不可变引用类型(值相等)
record PointRecord(int X, int Y);