2010-08-30 74 views
-1

我的字典聲明如下如何在C#

public static Dictionary<object, DataInfo> DataDic = new Dictionary<object, DataInfo>(); 

    public class DataInfo 
    { 
     public string DSPER;  // Data Sample Period 
     public int TOTSMP;  // Total Samples to be made 
     public int REPGSZ;  // Report Group Size 
     public List<int> IDList; // Array List to collect all the enabled IDs 
    } 

功能InitDataDic下面叫,我怎麼能寫的重新分配tdi.TOTSMP後的字典.Remove().Add()的代碼更新複雜的字典值的某些部分= 0在true條件下以簡單的方式。

public void InitDataDic (object objid, DataInfo datainfo, int totsmp) 
{ 
    DataInfo tdi = new DataInfo(); 
    object trid = objid; 
    tdi = datainfo; 

    if (DataDic.ContainsKey(trid) == true) 
    { 
     DataDic.Remove(trid); // here, i mentioned above 
     tdi.TOTSMP = 0; 
     DataDic.Add(trid, tdi); // here, i mentioned above 
    } 
    else 
    { 
     tdi.TOTSMP = topsmp; 
     DataDic.Add(trid, tdi); 
    } 
} 
+0

有沒有人建議您致電領域,而不是''DataSamplePeriod' DSPER'(這是不可讀和神祕的),同樣爲所有其他人呢? – Timwi 2010-08-30 07:28:48

+0

@Timwi,簡短的'DSPER'來自SEMI E5標準手冊。當然這是有點難以理解和神祕的。實際上,它非常好地匹配了標準手冊中定義的參數。謝謝。 – 2010-08-31 05:37:15

+0

因此,你永遠在別人的錯誤,而不是主動去解決它,你可以。 – Timwi 2010-08-31 07:40:19

回答

1

如果您想更新字典中的對象(r​​ef型),只需更新對象即可。

if (DataDic.TryGetValue(trid, out tdi) 
{ 
    // already exists in dict, tdi will be initialized with ref to object from dict 
    tdi.TOTSMP = 0; // update tdi 
} 
else 
{ 
    .... 
} 
+0

它工作得很好,謝謝。 – 2010-08-30 07:11:30

+0

最後,我發現了另一個更簡單的解決方案,即'DataDic [trid] .TOTSMP = tdi.TOTSMP'來更新存在的字典值。 – 2010-08-31 09:06:12