C# 结构体(Struct)
C#中的结构体 (Struct) 类型是一种轻量级的数据类型,类似于类 (Class),但是它在内存中存储的方式和使用方法都有所不同。
结构体的声明
结构体的声明和类相似,但是关键字是 struct
而不是 class
。
struct Person
{
public string Name;
public int Age;
}
如上,结构体 Person
包含了两个公共的字段:Name
和 Age
。
与类不同的是,结构体不支持继承(inheritance)或手动设置默认构造函数,而是使用默认构造函数初始化其所有字段。
结构体的使用
结构体的使用方式与类相似。
- 创建结构体的实例
Person p = new Person();
如上,创建了一个 Person
结构体的实例 p
。此时,Name
和 Age
的值都是默认值:引用类型为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;
}
}
- 修改结构体的字段值
p.Name = "Jerry";
如上,将实例 p
的 Name
字段值修改为 “Jerry”。
结构体与类的区别
结构体与类有以下几个区别:
-
存储方式:结构体在内存中是按值存储的,而类是按引用存储的。
-
声明方式:结构体使用
struct
关键字声明,类使用class
。 -
初始化方式:结构体使用默认构造函数初始化所有字段,类可以手动设置默认构造函数。
-
继承方式:结构体不支持继承,类支持继承。
-
垃圾回收方式:结构体存储在栈上,没有垃圾回收的开销,类存储在堆上,需要垃圾回收。
根据以上特点,当需要使用简单的、值类型的数据类型时,应该选择使用结构体。当需要使用复杂的、引用类型的数据类型时,应该选择使用类。
总结
本文介绍了C#中结构体类型的声明和使用方式,并且列举了结构体和类的区别。在开发中,应该根据实际需求选择合适的数据类型。