C#中类和结构相似,但结构缺乏某些功能,eg:继承。结构是个值类型,因此创建结构要比创建类的速度要快。如果你有一些紧凑循环,需要在其中创建大量新数据结构,则应考虑使用结构而不是类。结构还用于封装数据字段组,例如网格上点的坐标或矩形的尺寸。
下面是两个结构:
public struct StructWithPublicMembers
{
public int X;
public int Y;
}
public struct StructWithProperties
{
private int _X;
public int X
{
get { return _X; }
set { _X = value; }
}
private int _Y;
public int Y
{
get { return _Y; }
set { _Y = value; }
}
}
下面是赋值:
StructWithProperties PropertiesStruct;
StructWithPublicMembers MembersStruct;
MembersStruct.X = 50;
MembersStruct.Y = 100;
PropertiesStruct.X = 50;
PropertiesStruct.Y = 100;
Console.Read();
可是编译出错:
分析:当调用结构的公共字段时,可以不使用new关键字来定义结构变量;当调用结构的属性或方法时,必须使用new关键字来定义结构变量。
解决:
StructWithProperties PropertiesStruct =new StructWithProperties();
StructWithPublicMembers MembersStruct;
MembersStruct.X = 50;
MembersStruct.Y = 100;
PropertiesStruct.X = 50;
PropertiesStruct.Y = 100;