假如我有一个dll中封装了如下函数和接口。  
           public  interface  Myinterfance  
           {  
                       string  Msg  
                       {  
                                   get;  
                       }  
           }  
 
           public  class  ShowMe  
           {  
                       public  static  void  MessageBox(ref  Myinterfance  k)  
                       {  
                                   System.Windows.Forms.MessageBox.Show(k.Msg);  
                       }  
           }  
 
我现在要调用ShowMe.MessageBox()函数,我使用的方法是:  
 
           public  class  Class1:Myinterfance  
           {  
                       public  Class1()  
                       {  
 
                       }  
 
                       public  string  Msg  
                       {  
                                   get  
                                   {  
                                               return  "hello  world";  
                                   }  
                       }  
 
           }  
          ShowMe.MessageBox(ref new  Class1())但编译无法通过,请问这个问题如何解决?

解决方案 »

  1.   

    首先,这里不REF也没有问题,对象默认就是引用,其次,你把NEW CLASS1()放到外面
    Myinterfance a = new Class1();
    ShowMe.MessageBox(ref a);看看可不可以
      

  2.   

    不用ref就可以了,ref是应用于值类型参数的,如果应用于引用类型,完全是多余使用了ref标记的参数,编译器会要求其实参必须为左值,而new Class1()此处并非为左值,编译就不会通过楼上的应该可以通过
      

  3.   

    用第二种方法可行。但不用ref会报类型不一致错误。