C# 如何在C中使用指向哈希表值的指针#

C# 如何在C中使用指向哈希表值的指针#,c#,pointers,hash,hashtable,C#,Pointers,Hash,Hashtable,我想要的是,许多组件都有内部类变量,其中包含一些与类相关的局部信息。当组件运行时,它们会在内部得到更新 public class myclass_1 { public Hashtable housekeeping_hash = new Hashtable(); ... housekeeping_hash.Add('foo',(double)value1); housekeeping_hash.Add('bar',(double)value2); ...

我想要的是,许多组件都有内部类变量,其中包含一些与类相关的局部信息。当组件运行时,它们会在内部得到更新

public class myclass_1
{ 
    public Hashtable housekeeping_hash = new Hashtable();
    ...
    housekeeping_hash.Add('foo',(double)value1);
    housekeeping_hash.Add('bar',(double)value2);
    ...
我将有许多不同的类,都有一个内务处理哈希表

public class myclass_2
{ 
    public Hashtable housekeeping_hash = new Hashtable();
    ....
    housekeeping_hash.Add('sunset',(double)value3);
    housekeeping_hash.Add('sunrise',(double)value90);
    ...
我想要的是另一个类,它可以记录指向每个
myclass_35;
哈希表值的指针,然后在以后报告这些值。比如:

public class housekeeper
{
    public void find_housekeeping_hashes
    {
        //foreach (myclass in all_of_myclasses)
        {
            Hashtable hTable = myclass.IGetHash();
            foreach (DictionaryEntry Entry in hTable )
            {
                unsafe
                {
                    //_items is a class with 'Name' and 'Data' accessible attributes
                    _items.Add(new HousekeepingItem((string)Entry.Key, &((double)Entry.Value)));
                }              
            }
        }
    }
    public void reportHousekeeping()
    {
        //every N seconds
        foreach (HousekeepingItem item in _items)
            {
                double val = (double) *(_item.Data);
                result += "," + item.Name + "|" + val.ToString();
            }
    }
这是总的想法。我希望能够对许多组件快速执行此操作,因此我尝试使用指针来报告每个内务处理哈希表。但是当我试图记录
&((double)Entry.Value)
的地址时,我遇到了一个错误。错误为:
错误:无法获取给定表达式的地址


这样的事情可能吗?我不熟悉C#,不知道哈希表及其元素是否可以在内存中固定,它们的输入键和值是否“指向”。我尝试了上面的许多伪代码变体,遇到了类似的问题

<代码>我想让很多组件都有内部类变量,其中包含了与类< /代码>有关的局部信息。我想你可能在寻找BTW,忘记内存,C是不是C++。创建适当的强类型属性,或者使用
字典
或类似的东西。忘记
不安全的
,你也不需要它,看起来
myclass_1
myclass_2
应该继承自一个基本的
MyBaseClass
(也请将你的命名约定作为一个旁注),这将声明字典内容。我还想补充几点:1)请阅读StringBuilder。。。使用+=向报表中添加大量字符串不是一个好方法。2) 如果所有这些都是为了执行日志记录而编写的,那么请看一下日志记录框架,例如NLog。从这个问题上看,除了日志记录之外,还不清楚hosekeeping集合使用了什么。3) 全局使用一个单音词典或哈希表,可从所有类访问,如果全局需要,不要将其封装在每个类中;对于C/C++中通常使用指针的所有内容,只需使用引用即可。不要再考虑引用和取消引用指向存储的指针,让编译器替您处理。让哈希表负责自己的存储;您引用哈希表,并指示它们执行您的出价。提高抽象层次。