2012-06-16 82 views
0

的值我有一本字典如何更改字典

public static IDictionary<string, IList<string>> checksCollection = 
      new Dictionary<string, IList<string>>(); 

我添加到字典中,如下所示:

public static void addCheck(string checkName, string hostName, 
      string port, string pollInterval, string alertEmail, 
      string alertSMS, string alertURI) 
{ 
    checksCollection.Add(checkName, new[] { checkName, hostName, port, 
       pollInterval, alertEmail, alertSMS, alertURI }); 
} 

它是如何將有可能改變alertURI列表值?

+0

您的示例顯示瞭如何添加代碼,但它確實顯示了要修改'alertUri'的位置。你能編碼解釋你想要做什麼嗎? – HackedByChinese

+0

@HackedByChinese嗨,記錄被添加到字典後,我只想更新字典中的「alertURI」值 – user1460619

+0

而不是重複checkName作爲字典鍵使用鍵控集合http://msdn.microsoft.com/ EN-US /庫/ ms132438.aspx – Paparazzi

回答

1

最快的方法是,從字典中獲取IList<string>並訪問其第七個元素:

checksCollection[checkName][6] = "new value"; 

但是,如果我是你,我會做字符串數組自己的類中的所有這些值,這樣你就不必硬編碼的索引值,以防萬一您添加或刪除其他屬性在將來。創建一個類定義,像這樣:

public class YourClass 
{ 
    public string CheckName { get; set; } 
    public string HostName { get; set; } 
    public string Port { get; set; } 
    public string PollInterval { get; set; } 
    public string AlertEmail { get; set; } 
    public string AlertSMS { get; set; } 
    public string AlertURI { get; set; } 
} 

,改變你的字典中的定義:

public static IDictionary<string, YourClass> checksCollection = 
    new Dictionary<string, YourClass>(); 

然後添加到它(但最好你會在YourClass,是以參數創建一個構造函數):

public static void addCheck(string checkName, string hostName, string port, string pollInterval, string alertEmail, string alertSMS, string alertURI) 
{ 
    checksCollection.Add(checkName, new YourClass() { 
     CheckName = checkName, 
     HostName = hostName, 
     Port = port, 
     PollInterval = pollInterval, 
     AlertEmail = alertEmail, 
     AlertSMS = alertSMS, 
     AlertURI = alertURI 
    }); 
} 

然後修改變得簡單,沒有猜測數組索引:

checksCollection[checkName].AlertURI = "new value"; 
0

一種方式是做

checksCollection["somekey"][6] = "new value for alertURI" 

我建議設立一個小型的對象,它表示這7個價值觀,像

class Foo { 
    public string HostName { get; set; } 
    public string Port { get; set; } 
    public string PollInterval { get; set; } 
    public string AlertEmail { get; set; } 
    public string AlertSMS { get; set; } 
    public string AlertURI { get; set; } 
} 

然後,你可以通過

checksCollection["key"].AlertURI = "something else"; 
改變