对象Class1 和Class2
class Class1{
    Hashtable H=new Hashtable();
    Plublic Class1(string s){
        H.Add("A",s);
    }}class Class2{
    for(int i=0;i<3;i++){
        Class1 c= new Class1(""+i);
    }
    
    这里,如何取得i==0时由Class1所创建的Hashtable的值?
    也就是,Class1中的 H 在第一次初始化后便不会被销毁,直到整个程序退出为止。 
    Class1中的H的值不允许赋给其他变量
}

解决方案 »

  1.   

    class Class1{
        public static Hashtable H=new Hashtable();
        Plublic Class1(string s){
            H.Add("A",s);
        }} static
      

  2.   

    for(int i=0;i <3;i++){ 
            Class1 c= new Class1(""+i); 
        } 
    循环结束后 
    H存放的值是多少?2吧我希望 H的值是0
      

  3.   

    class Class1:IDisposable{
            public static unsafe Hashtable TableCache;
            bool isDispose = false;
            public Class1() {
                GC.SuppressFinalize(TableCache);
                Random r = new Random(DateTime.Now.Millisecond);
                if (!TableCache.ContainsKey("DK")){
                TableCache = new Hashtable();
                TableCache.Add("DK", r.Next());}
           }            #region IDisposable 成员              public void Dispose()
                {
                    Dispose(true);
                    GC.SuppressFinalize(this);
                }
                protected virtual void Dispose(bool disposing) {
                    if (!isDispose){
                        if (disposing){
                        }
                    }
                    isDispose = true;
                }
                ~Class1()
                {
                    Dispose(false);
                }
                #endregion
    }class Class2{ 
        for(int i=0;i <3;i++){ 
            Class1 c= new Class1(); 
        } 
    }
    如果r.Next()产生的随机数为111111
    Class2的循环结束后希望TableCache["DK"]的值仍为111111
      

  4.   

    你这个需求根本不应该用Hashtable,用个string足够了...
    class Class1
    {
    private string h=null;
    private bool isChanged=false;
    public string H
    {
    get {return h;}
    set
    {
    if(!isChanged)
    {
    h=value;
    isChanged=true;
    }
    }

    public Class1(string s)
    {
    H=s;
    }
    }至于是不是要用static你没讲清楚...如果“Class1中的 H 在第一次初始化后便不会被销毁”是指“所有Class1实例”就要用static,否则就不能用...另外...
    Class1 c= new Class1(""+i);//这样的用法很奇怪,貌似来自某种语言的不良习惯...Class1 c= new Class1(i.ToString());//正确用法...
      

  5.   

    class Class1:IDisposable{ 
            public static unsafe Hashtable TableCache = new Hashtable(); 
            bool isDispose = false; 
            public Class1() { 
                GC.SuppressFinalize(TableCache); 
                Random r = new Random(DateTime.Now.Millisecond); 
                if (!TableCache.ContainsKey("DK")){             
                TableCache.Add("DK", r.Next());} 
          }             #region IDisposable 成员               public void Dispose() 
                { 
                    Dispose(true); 
                    GC.SuppressFinalize(this); 
                } 
                protected virtual void Dispose(bool disposing) { 
                    if (!isDispose){ 
                        if (disposing){ 
                        } 
                    } 
                    isDispose = true; 
                } 
                ~Class1() 
                { 
                    Dispose(false); 
                } 
                #endregion 
    } class Class2{ 
        for(int i=0;i <3;i++){ 
            Class1 c= new Class1(); 
        } 

    测试成功结贴