什么时候应该使用结构而不是类?
MSDN说,当你需要轻量级对象时,你应该使用结构。 当一个结构比一个类更可取时,还有其他场景吗?
编辑:
有些人忘记了:
1.结构可以有方法!
2.结构没有继承能力。
另一个编辑:
我了解技术上的差异,我只是没有很好的感觉,因为什么时候使用结构。
MSDN有答案:在类和结构之间选择。
基本上,该页面为您提供了一个4项清单,并表示要使用一个班级,除非您的类型符合所有条件。
除非类型具有以下所有特征,否则不要定义结构:
我很惊讶,我没有读过任何以前的答案,我认为这是最关键的方面:
当我想要一个没有身份的类型时,我使用结构。 例如3D点:
public struct ThreeDimensionalPoint
{
public readonly int X, Y, Z;
public ThreeDimensionalPoint(int x, int y, int z)
{
this.X = x;
this.Y = y;
this.Z = z;
}
public override string ToString()
{
return "(X=" + this.X + ", Y=" + this.Y + ", Z=" + this.Z + ")";
}
public override int GetHashCode()
{
return (this.X + 2) ^ (this.Y + 2) ^ (this.Z + 2);
}
public override bool Equals(object obj)
{
if (!(obj is ThreeDimensionalPoint))
return false;
ThreeDimensionalPoint other = (ThreeDimensionalPoint)obj;
return this == other;
}
public static bool operator ==(ThreeDimensionalPoint p1, ThreeDimensionalPoint p2)
{
return p1.X == p2.X && p1.Y == p2.Y && p1.Z == p2.Z;
}
public static bool operator !=(ThreeDimensionalPoint p1, ThreeDimensionalPoint p2)
{
return !(p1 == p2);
}
}
如果你有这个结构的两个实例,你不关心它们是内存中的单个数据还是两个。 你只关心他们所持有的价值。
Bill Wagner在他的书“effective c#”中有关于此的一章(http://www.amazon.com/Effective-Specific-Ways-Improve-Your/dp/0321245660)。 他通过使用以下原则得出结论:
如果你对所有4个问题回答“是”:使用一个结构。 否则,请使用课程。
链接地址: http://www.djcxy.com/p/82801.html上一篇: When should I use a struct instead of a class?
下一篇: on stack or heap