什么時(shí)候應(yīng)該使用結(jié)構(gòu)而不是類(lèi)?MSDN說(shuō),當(dāng)您需要輕量級(jí)對(duì)象時(shí),應(yīng)該使用structs。當(dāng)一個(gè)結(jié)構(gòu)比一個(gè)類(lèi)更可取的時(shí)候,還有其他的場(chǎng)景嗎?有些人可能忘記了:結(jié)構(gòu)可以有方法。結(jié)構(gòu)不能繼承。我理解結(jié)構(gòu)和類(lèi)之間的技術(shù)差異,只是感覺(jué)不太好。什么時(shí)候使用結(jié)構(gòu)。
3 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
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); }}
- 3 回答
- 0 關(guān)注
- 502 瀏覽
添加回答
舉報(bào)
0/150
提交
取消