为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候应该使用结构而不是类?

什么时候应该使用结构而不是类?

慕森王 2019-07-06 13:11:20
什么时候应该使用结构而不是类?MSDN说,当您需要轻量级对象时,应该使用structs。当一个结构比一个类更可取的时候,还有其他的场景吗?有些人可能忘记了:结构可以有方法。结构不能继承。我理解结构和类之间的技术差异,只是感觉不太好。什么时候使用结构。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

我感到惊讶的是,我没有读到以前的任何一个答案,我认为这是最关键的方面:

当我想要一个没有标识的类型时,我使用structs。例如,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);
    }}

如果这个结构有两个实例,那么您不关心它们是否是内存中的一个或两个数据。你只关心他们的价值。


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 480 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信