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

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

克隆/深度復(fù)制.NET泛型字典<string,T>的最佳方法是什么?

克隆/深度復(fù)制.NET泛型字典<string,T>的最佳方法是什么?

C#
瀟瀟雨雨 2019-09-02 10:12:34
我有一個(gè)通用字典Dictionary<string, T>,我想基本上做一個(gè)克?。ǎ┑娜魏谓ㄗh。
查看完整描述

3 回答

?
慕姐8265434

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

好的,.NET 2.0回答:


如果您不需要克隆值,則可以使用構(gòu)造函數(shù)重載到Dictionary,它接受現(xiàn)有的IDictionary。(您也可以將比較器指定為現(xiàn)有字典的比較器。)


如果確實(shí)需要克隆值,可以使用以下內(nèi)容:


public static Dictionary<TKey, TValue> CloneDictionaryCloningValues<TKey, TValue>

   (Dictionary<TKey, TValue> original) where TValue : ICloneable

{

    Dictionary<TKey, TValue> ret = new Dictionary<TKey, TValue>(original.Count,

                                                            original.Comparer);

    foreach (KeyValuePair<TKey, TValue> entry in original)

    {

        ret.Add(entry.Key, (TValue) entry.Value.Clone());

    }

    return ret;

}

當(dāng)然,這也依賴于TValue.Clone()適當(dāng)?shù)纳疃瓤寺 ?/p>


查看完整回答
反對 回復(fù) 2019-09-02
?
元芳怎么了

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


您希望副本有多深,以及您使用的是什么版本的.NET?我懷疑如果您使用的是.NET 3.5,那么對ToDictionary進(jìn)行LINQ調(diào)用(同時(shí)指定鍵和元素選擇器)將是最簡單的方法。


例如,如果您不介意該值是淺層克?。?/p>


var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?entry => entry.Value);

如果您已經(jīng)限制T實(shí)現(xiàn)ICloneable:


var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?entry => (T) entry.Value.Clone());

(這些是未經(jīng)測試的,但應(yīng)該有效。)


查看完整回答
反對 回復(fù) 2019-09-02
?
SMILET

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

Dictionary<string, int> dictionary = new Dictionary<string, int>();


Dictionary<string, int> copy = new Dictionary<string, int>(dictionary);


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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