我定义了一个对象,其中有 StringBuilder成员。被子类继承后创建对象初始化了StringBuilder 成员,放入HashTable中。当使用的时候发现StringBuilder型的成员成空(没有初始化),这是为何??? 
注:vs。net2003

解决方案 »

  1.   

    public class A
    {
       ...
       public StringBuilder command=null;
       ...
    }
    ...
    public class B:A
    {
      ...
    }//...初始化类B 并将其放到HashTable中
     
    public override bool AddReader(Hashtable rds)
    {
    try
    {
    foreach(DictionaryEntry en in rds)
    {
       Reader rd=(Reader)en.Value;
       if(rd.Node==this.no)
      {
    rd.command=new StringBuilder(25);
    rd.command.Append(SBEG+CMD_READ_TIMER+rd.Addr+SEND);
    readers.Add(rd.Addr,rd);
    readindex.Add((readindex.Count+1),rd.Addr);
      }
    }
    return true;
    }
    catch(Exception er){ }
    }
    //..从HashTable中取出
    private void GetSendCommand()
    {//这里出了问题,在检视窗口中察看时发现:command 为未定义类型的
              lock(readers)
    {
       if(immsend>0)
       {
         cmmread=(Reader)readers[readindex[immsend].ToString()];
         immsend=0;
         return;
       }
       else
      {
        curcommreader++;
        cmmread=(Reader)readers[readindex[curcommreader].ToString()];
                 //cmmread 对象的 command 对象为null.
      }
    }
    }
      

  2.   

    有愿意交流的Msn:[email protected]
      

  3.   

    public class A
    {
       ...
       public StringBuilder command=null;
       ...
    }
    ...
    public class B:A
    {
      ...
    }//...初始化类B 并将其放到HashTable中
     
    public override bool AddB(Hashtable rds)
    {
    try
    {
    foreach(DictionaryEntry en in rds)
    {
       B rd=(B)en.Value;
       if(rd.Node==this.no)
      {
    rd.command=new StringBuilder(25);
    rd.command.Append(SBEG+CMD_READ_TIMER+rd.Addr+SEND);
    readers.Add(rd.Addr,rd);
    readindex.Add((readindex.Count+1),rd.Addr);
      }
    }
    return true;
    }
    catch(Exception er){ }
    }
    //..从HashTable中取出
    private void GetSendCommand()
    {//这里出了问题,在检视窗口中察看时发现:command 为未定义类型的
              lock(readers)
    {
       if(immsend>0)
       {
         B cmmread=(B)readers[readindex[immsend].ToString()];
         immsend=0;
         return;
       }
       else
      {
        curcommreader++;
        B cmmread=(B)readers[readindex[curcommreader].ToString()];
                 //cmmread 对象的 command 对象为null.
      }
    }
    }