C# 结构体(Struct)


C#中的结构体 (Struct) 类型是一种轻量级的数据类型,类似于类 (Class),但是它在内存中存储的方式和使用方法都有所不同。

结构体的声明

结构体的声明和类相似,但是关键字是 struct 而不是 class

struct Person
{
    public string Name;
    public int Age;
}

如上,结构体 Person 包含了两个公共的字段:NameAge

与类不同的是,结构体不支持继承(inheritance)或手动设置默认构造函数,而是使用默认构造函数初始化其所有字段。

结构体的使用

结构体的使用方式与类相似。

  1. 创建结构体的实例
Person p = new Person();

如上,创建了一个 Person 结构体的实例 p。此时,NameAge 的值都是默认值:引用类型为null,值类型为0

也可以使用带参数的构造函数来初始化结构体的字段值。

Person p = new Person("Tom", 20);
struct Person
{
    public string Name;
    public int Age;
    
    public Person(string name, int age) // 带参数的构造函数
    {
        Name = name;
        Age = age;
    }
}
  1. 修改结构体的字段值
p.Name = "Jerry";

如上,将实例 pName 字段值修改为 “Jerry”。

结构体与类的区别

结构体与类有以下几个区别:

  1. 存储方式:结构体在内存中是按值存储的,而类是按引用存储的。

  2. 声明方式:结构体使用 struct 关键字声明,类使用 class

  3. 初始化方式:结构体使用默认构造函数初始化所有字段,类可以手动设置默认构造函数。

  4. 继承方式:结构体不支持继承,类支持继承。

  5. 垃圾回收方式:结构体存储在栈上,没有垃圾回收的开销,类存储在堆上,需要垃圾回收。

根据以上特点,当需要使用简单的、值类型的数据类型时,应该选择使用结构体。当需要使用复杂的、引用类型的数据类型时,应该选择使用类。

总结

本文介绍了C#中结构体类型的声明和使用方式,并且列举了结构体和类的区别。在开发中,应该根据实际需求选择合适的数据类型。