赞
踩
结构体(struct)是一种用户定义的值类型。结构体通常用于封装一组相关的变量(比如数值和字符串),这些变量组成一个小型的数据结构。通俗易懂的解释:结构体(struct)是一种简单的数据类型,用于存储一组相关的数据。与类(class)不同,结构体是值类型,直接存储数据,通常用于表示轻量级对象,例如点的坐标或矩形的尺寸。
3.1.1 值类型:结构体是值类型,它们存储在栈上而不是堆上。当你将一个结构体赋值给另一个结构体时,是对其值的拷贝。
3.1.2 轻量级:结构体适用于包含少量数据的小型数据结构。
3.1.3 不可继承:结构体不支持继承。你不能从一个结构体派生出另一个结构体。
3.1.4 默认构造函数:结构体自动提供一个无参数的默认构造函数,用于初始化其字段。
3.1.5 接口实现:结构体可以实现接口。
3.2.1 定义结构体
- public struct Point
-
- {
-
- public int X { get; set; }
-
- public int Y { get; set; }
-
- // 构造函数
-
- public Point(int x, int y)
-
- {
-
- X = x;
-
- Y = y;
-
- }
-
- // 方法
-
- public void Display()
-
- {
-
- Console.WriteLine($"Point: ({X}, {Y})");
-
- }
3.2.2 使用结构体
- public class Program
- {
- public static void Main()
- {
- // 使用构造函数创建结构体实例
- Point p1 = new Point(10, 20);
- p1.Display(); // 输出: Point: (10, 20)
-
- // 默认构造函数
- Point p2;
- p2.X = 30;
- p2.Y = 40;
- p2.Display(); // 输出: Point: (30, 40)
-
- // 复制结构体
- Point p3 = p1;
- p3.X = 50;
- p3.Display(); // 输出: Point: (50, 20)
- p1.Display(); // 输出: Point: (10, 20) - p1 未受影响
- }
- }
特性 | 结构体(struct) | 类(class) |
存储位置 | 栈(Stack) | 堆(Heap |
默认实例化方式 | 无参数构造函数自动初始化 | 必须显式调用构造函数 |
继承 | 不支持继承 | 支持继承 |
值/引用 | 值类型,赋值时复制其内容 | 引用类型,赋值时复制引用 |
适用场景 | 适合小型、简单的数据结构 | 适合复杂或大型的数据结构 |
需要表示一个轻量级对象,且对象不会被修改(即不可变)。
对象的大小小于16字节,并且频繁创建和销毁。
对象的生命周期很短或被封装在另一个对象中使用。
3.5.1 定义一个结构体
- public struct Rectangle
- {
- public int Width { get; set; }
- public int Height { get; set; }
-
- public Rectangle(int width, int height)
- {
- Width = width;
- Height = height;
- }
-
- public int GetArea()
- {
- return Width * Height;
- }
-
- public void Display()
- {
- Console.WriteLine($"Rectangle: Width = {Width}, Height = {Height}, Area = {GetArea()}");
- }
- }
3.5.2 使用结构体
- public class Program
- {
- public static void Main()
- {
- // 创建结构体实例
- Rectangle rect1 = new Rectangle(10, 20);
- rect1.Display(); // 输出: Rectangle: Width = 10, Height = 20, Area = 200
-
- // 默认构造函数
- Rectangle rect2;
- rect2.Width = 15;
- rect2.Height = 25;
- rect2.Display(); // 输出: Rectangle: Width = 15, Height = 25, Area = 375
-
- // 复制结构体
- Rectangle rect3 = rect1;
- rect3.Width = 30;
- rect3.Display(); // 输出: Rectangle: Width = 30, Height = 20, Area = 600
- rect1.Display(); // 输出: Rectangle: Width = 10, Height = 20, Area = 200 - rect1 未受影响
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。