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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我應(yīng)該使用我的對(duì)象作為字典鍵值還是連接字符串

我應(yīng)該使用我的對(duì)象作為字典鍵值還是連接字符串

C#
阿晨1998 2021-06-27 12:47:20
我有以下課程public class MyObject{    public int Id1 {get;set;}    public int Id2 {get;set;}    public int Id3 {get;set;}    public MyObject(int id1, int id2, int id3)    {      this.Id1 = id1;      this.Id2 = id2;      this.Id3 = id3;    }}我想在字典中創(chuàng)建一個(gè)對(duì)象列表。我是不是最好這樣做Dictionary<MyObject, MyObject> dictionary = new Dictionary<MyObject,MyObject>();MyObject object1 = new MyObject(1,2,3);MyObject object2 = new MyObject(2,2,3);MyObject object3 = new MyObject(2,2,3);if(!dictionary.ContainsKey(object1))  dictionary.Add(object1,object1);if(!dictionary.ContainsKey(object2))  dictionary.Add(object2,object2);if(!dictionary.ContainsKey(object3))  dictionary.Add(object3,object3);或者我應(yīng)該創(chuàng)建一個(gè)字典,其鍵是一個(gè)字符串,并包含連接的字符串。例如Dictionary<string, MyObject> dictionary2 = new Dictionary<string,MyObject>();string key = object1.Id1 + "|" + object1.Id2 + "|" + object1.Id3;if(!dictionary2.ContainsKey(key ))  dictionary2.Add(key ,object1);
查看完整描述

2 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

看起來(lái)你想要的是一個(gè) Hashset,因?yàn)殒I和值是相同的,你不想要重復(fù)。


您將需要這個(gè)類來(lái)說(shuō)明哪些對(duì)象是相等的。


class MyObjectEqualityComparer : IEqualityComparer<MyObject>

{

    MyObjectEqualityComparer()

    {

    }


    public static readonly MyObjectEqualityComparer Default = new MyObjectEqualityComparer();


    public bool Equals(MyObject x, MyObject y)

    {

        return x.Id1 == y.Id1 && x.Id2 == y.Id2 && x.Id3 == y.Id3;

    }


    public int GetHashCode(MyObject obj)

    {

        return obj.Id1.GetHashCode() ^ obj.Id2.GetHashCode() ^ obj.Id3.GetHashCode();

    }

}

然后做一個(gè)哈希集


HashSet<MyObject> set = new HashSet<MyObject>(MyObjectEqualityComparer.Default);



MyObject object1 = new MyObject(1,2,3);

MyObject object2 = new MyObject(2,2,3);

MyObject object3 = new MyObject(2,2,3);



if(set.Add(object1))

{

   // item was added.

}

else

{

   // item already exist.

}


查看完整回答
反對(duì) 回復(fù) 2021-07-03
?
梵蒂岡之花

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

  1. 覆蓋EqualsGetHashCodeinMyObject

  2. 將自定義傳遞IEqualityComparer<MyObject>給字典構(gòu)造函數(shù)

但是將這個(gè)對(duì)象存儲(chǔ)為鍵和值是沒(méi)有意義的。也許你想用 aHashSet<MyObject>代替。


查看完整回答
反對(duì) 回復(fù) 2021-07-03
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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