Z
ZHANK
面向对象

类与对象

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);