如下.
有一个类
public class a
{
     public a()
     {
         ;
     }
     public int add(int x,int y)
     {
       return x+y;
     }
     
}public class b<T>
{
   T myTT
   public b()
    {
       int y;
       y=myTT.add(3,4);//运行这儿时,编绎器在此报错,提示add函数没有被定义.我是给T赋值为类'a'
       messageBox.Show(y.Tostring());
    }
}
static class Program
{
   static void Main()
   {
       b<a> mya=new b<a>();//我是给T赋值为类'a'   }
}y=myTT.add(3,4);//实例化时,我会给T赋类'a'编绎器在此报错,提示add函数没有被定义.
不知道用什么方调用类a里面的add函数.
(请不要问我为什么要用泛形来做,不要管这个例子是否有意义,我只想搞懂这个方法如何实现,还有程序中的大小写可能有错,我只是用来描述题意,可以忽略.)
不知道用什么方调用类a里面的add函数.

解决方案 »

  1.   

    public interface ia
    {
       int add();
    }
    public class a:ia
    {
        public a()
        {
            ;
        }
        public int add(int x,int y)
        {
          return x+y;
        }
       
    }public class b <T>:where ia
    {
      T myTT
      public b()
        {
          int y;
          y=myTT.add(3,4);//运行这儿时,编绎器在此报错,提示add函数没有被定义.我是给T赋值为类'a'
          messageBox.Show(y.Tostring());
        }
    }
    static class Program
    {
      static void Main()
      {
          b <a> mya=new b <a>();//我是给T赋值为类'a'  }
    }
      

  2.   

    public class b <T> 

      T myTT 
      public b() 
        { 
          int y; 
          //y=myTT.add(3,4);//运行这儿时,编绎器在此报错,提示add函数没有被定义.我是给T赋值为类'a' 
          y=(myTT as a).add(3,4);
          messageBox.Show(y.Tostring()); 
        } 
    } 你在编译的时候T是不会等于a的,所以T就不会有add()这个方法了
      

  3.   

    楼主你这样用不知道有什么意义?((a)myTT).add(3,4);