面向对象—结构体(Structs)

结构体(Structs)简介
结构体和类(Classes)在很多方面都很相似,但也有一些关键的区别:

值类型 vs 引用类型:

结构体是值类型:当你把一个结构体赋值给另一个变量时,它会创建这个值的一个新拷贝。
类是引用类型:当你把一个类的实例(对象)赋值给另一个变量时,两个变量都会引用同一个对象。
内存分配:

结构体通常在栈上分配内存,而类的对象通常在堆上分配内存。
结构体的这种内存分配方式通常可以带来更快的访问速度,但它们更适合用于小型、简单的数据结构。
继承:

结构体不能继承其他的结构体或类,但它们可以实现接口。
类可以继承其他类,这是面向对象编程的一个核心特性。
如何定义一个结构体
在C#中定义结构体是很简单的。这里有一个简单的例子:

struct Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
    
    public void Display()
    {
        Console.WriteLine($"X: {X}, Y: {Y}");
    }
}

在这个例子中,Point 结构体有两个公共字段(X 和 Y)和一个构造函数,还有一个显示点坐标的方法 Display。

何时使用结构体
尽管结构体和类在很多情况下可以互换使用,但是以下情况使用结构体可能更合适:

表示轻量级的对象:比如坐标点(像上面的例子)、颜色值或复数等。
对象不太可能改变:结构体是值类型,所以它们的值在创建后不太可能改变。
对象的数量非常多:由于结构体是在栈上分配的,如果你有成千上万的小对象,使用结构体可能会得到更好的性能。
结构体的使用建议
不要使结构体过于复杂:结构体最好用于小型的、不可变的数据类型。
尽量使结构体不可变:一旦结构体被创建,最好不要改变它的状态。这有助于保持代码的清晰和易于维护。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容