结构
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 个字节。
- 这是不可改变的。
- 它不必经常装箱。