我现在有一个Hashtable,它的value是一个struct想修改这个值,于是有这个代码:      SignRecord sn = (SignRecord)htSignCache[strUserName];
其中SignRecord就是一个struct,htSignCache就是一个Hashtable,然后我想操纵sn修改hashtable的value,但是这个struct是一个值类型,修改sn不能起到修改hashtable的目的,请问这个怎么办呢?不想声明成class……

解决方案 »

  1.   

    反射struct ms 
    {
      public int a;
    }ArrayList al = new ArrayList();
    ms m1;
    m1.a = 100;
    al.Add(m1);
    ms temp = (ms)al[0];
    Type t = typeof(ms);
    System.Reflection.FieldInfo fi = t.GetField("a");
    fi.SetValue( al[0] , 10 );or
    改后再重新加入ArrayList
      

  2.   

    把修改后的sn再回放到原来的hastTable中就可以了,如下:SignRecord sn = (SignRecord)htSignCache[strUserName];
    ...给sn赋值htSignCache[strUserName]=sn;