结构

struct 类型是一种值类型,通常用于封装一小组相关变量,例如矩形的坐标或库存中项目的特征。

是引用类型,结构是值类型。

using static System.Console;

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

        public override string ToString()
        {
            return $"X = {X}, Y = {Y}";
        }

        public void Display(string name)
        {
            WriteLine(name + ": " + ToString());
        }
    }

    class Program
    {
        static void Main()
        {
            var point1 = new Point {X = 10, Y = 20};
            // it's not a reference but value type
            var point2 = point1;
            point2.X = 777;
            point2.Y = 888;
            point1.Display(nameof(point1)); // point1: X = 10, Y = 20
            point2.Display(nameof(point2)); // point2: X = 777, Y = 888

            ReadKey();
        }
    }
}

结构也可以包含构造函数,常量,字段,方法,属性,索引器,运算符,事件和嵌套类型,但如果需要多个此类成员,则应考虑将类型设置为类。

MS 对何时使用 struct 以及何时使用类的一些建议

考虑

如果类型的实例很小并且通常是短暂的或通常嵌入在其他对象中,则定义结构而不是类。

避免

定义结构,除非该类型具有以下所有特征:

  • 它在逻辑上表示单个值,类似于原始类型(int,double 等)
  • 它的实例大小小于 16 个字节。
  • 这是不可改变的。
  • 它不必经常装箱。