第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么時候應(yīng)該使用結(jié)構(gòu)而不是類?

什么時候應(yīng)該使用結(jié)構(gòu)而不是類?

慕森王 2019-07-06 13:11:20
什么時候應(yīng)該使用結(jié)構(gòu)而不是類?MSDN說,當(dāng)您需要輕量級對象時,應(yīng)該使用structs。當(dāng)一個結(jié)構(gòu)比一個類更可取的時候,還有其他的場景嗎?有些人可能忘記了:結(jié)構(gòu)可以有方法。結(jié)構(gòu)不能繼承。我理解結(jié)構(gòu)和類之間的技術(shù)差異,只是感覺不太好。什么時候使用結(jié)構(gòu)。
查看完整描述

3 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊

我感到驚訝的是,我沒有讀到以前的任何一個答案,我認(rèn)為這是最關(guān)鍵的方面:

當(dāng)我想要一個沒有標(biāo)識的類型時,我使用structs。例如,3D點(diǎn):

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);
    }}

如果這個結(jié)構(gòu)有兩個實(shí)例,那么您不關(guān)心它們是否是內(nèi)存中的一個或兩個數(shù)據(jù)。你只關(guān)心他們的價值。


查看完整回答
反對 回復(fù) 2019-07-06
  • 3 回答
  • 0 關(guān)注
  • 500 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號