获取哈希表obj键&更改其公共属性

本文关键字:属性 哈希表 obj 获取 | 更新日期: 2023-09-27 18:11:23

首先声明一个哈希表及其值。哈希表项的键是GUID,值是一个包含几个字符串值的对象。

    Guid g = Guid.NewGuid();
    Hashtable hash = new Hashtable();
    InstallationFiles instFiles = new InstallationFiles(string1, string2, string3);
    hash.Add(g, instFiles);
    //...add many other values with different GUIDs...

我的目标是给用户一个编辑字符串1,string2, string3的可能性。长话短说,我可以获得需要编辑的条目的"GUID g":

   public void edit() 
   {
         //here I retrieve the GUID g of the item which has to be edited:
         object objectHash = item.Tag;
         //here i loop through all hash entries to find the editable one:
         foreach(DictionaryEntry de in hash)
         {
            if(de.Key.ToString() == objectHash) 
            {
            //here I would like to access the selected entry and change string1 - 
           //the line below is not working.
            hash[de.Key].string1 = "my new value"; 
            }
         }
   }

我如何使这行工作?

    hash[de.Key].string1 = "my new value"; 

获取哈希表obj键&更改其公共属性

Dictionary<Guid, InstallationFiles>代替HashTable

乌利希期刊指南。你可以用这个

 (hash[de.Key] as InstallationFiles).string1 = "asdasd" 

好的,解释:

因为Hashtable不是泛型类型,所以它包含键和值的引用作为对象。

这就是为什么,当你访问你的值hashtable[mykey]时,你得到了Object的参考。要使其作为对类型(InstallationFiles)的引用,您必须从"对Object的引用"获得"对InstallationFiles的引用"。在我的样本中,我使用"as"操作符来做到这一点。