结构体和类的比较
- 类是引用类型,结构是值类型。
- 结构是隐式密封的,它们不能被继承。
- 结构类型变量不能为null。
- 两个结构体变量不能引用同一对象。
- 结构体成员不可以初始化,类成员可以。
- 当结构体作为返回值时,讲创建他的副本并从函数成员中返回
- 当结构体作为值参数时,将创建实参结构的副本参与方法执行中
- 可以把结构用作ref和out参数,传入方法的是该结构的一个引用。
class SimpleClass
{
public int x;
public int y;
}
struct SimpleStruct
{
public int x;
public int y;
}
class Program
{
static void Main(string[] args)
{
SimpleClass simpleClass_1 = new SimpleClass();
SimpleClass simpleClass_2 = null;
SimpleStruct simpleStruct_1 = new SimpleStruct();
SimpleStruct simpleStruct_2 = new SimpleStruct();
simpleClass_1.x = simpleStruct_1.x = 1;
simpleClass_1.y = simpleStruct_1.y = 2;
simpleClass_2 = simpleClass_1;
simpleStruct_2 = simpleStruct_1;
Console.WriteLine("simpleClass_2 = simpleClass_1:{0}\n", (simpleClass_2 == simpleClass_1));
simpleClass_1.x = 10;
simpleStruct_1.x = 10;
Console.WriteLine("simpleClass_1:x:{0}\ty:{1}",simpleClass_1.x,simpleClass_1.y);
Console.WriteLine("simpleClass_2:x:{0}\ty:{1}\n", simpleClass_2.x, simpleClass_2.y);
Console.WriteLine("simpleStruct_1:x:{0}\ty:{1}", simpleStruct_1.x, simpleStruct_1.y);
Console.WriteLine("simpleStruct_2:x:{0}\ty:{1}", simpleStruct_2.x, simpleStruct_2.y);
Console.ReadKey();
}
}
输出结果: