c#结构和类的相关介绍


在C#中,结构和类(Class)是两种用于定义数据的复合类型,但它们在内存分配、默认值、继承等方面有所不同。下面我将简要介绍C#中的结构和类。

### 类(Class)

类是C#中最基本的面向对象编程的构造单元。它定义了一组具有共同属性和行为的对象模板。

- **内存分配**:类是引用类型,存储在堆(Heap)上。

- **默认值**:类的实例(对象)的字段不会自动初始化为其类型的默认值,除非在构造函数中显式初始化。

- **继承**:类可以继承自另一个类(除了`object`类,它是所有类的基类),支持多态和接口实现。

- **访问修饰符**:可以指定成员的访问级别(如`public`、`private`等)。

**示例**:


public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

### 结构(Struct)

结构是一种值类型,用于封装小型的相关变量。它们通常用于存储数据的集合,如点、矩形等。

- **内存分配**:结构是值类型,通常存储在栈(Stack)上,但如果作为类的字段或数组元素,则可能存储在堆上。

- **默认值**:结构的所有字段都自动初始化为该字段类型的默认值(例如,`int`的默认值为0)。

- **继承**:结构不支持继承自用户定义的类型(除了`ValueType`),但可以实现接口。

- **访问修饰符**:结构的成员默认为`private`,但也可以指定为`public`、`internal`等。

**示例**:


public struct Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
}

**总结**:类和结构在C#中都用于封装数据,但它们在内存管理、默认值、继承等方面存在重要差异。选择使用类还是结构,应根据具体场景和需求来决定。一般来说,如果数据较大或需要复杂的继承结构,则使用类;如果数据较小且简单,且希望获得更好的性能(因为结构是值类型,赋值时不会创建新对象),则使用结构。