using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            name<int> n = new name<int>();
            int a=n.add(100,200);
            Console.WriteLine(a);
        }
    }
    public class name<T>
    {
        public T add(T i,T j)
        {
            return i+j;
        }
        public void display(T t)
        {
            Console.WriteLine("hello " + t);
        }
    }
}
为什么这里不能使用"+"号.

解决方案 »

  1.   

    因为没有定义对T类型的+号是什么意思。当T为int类型的时候,不要说计算机,我想你自己也不清楚这是什么意思,还不说T还可以是自定义的复杂类型
      

  2.   

    T 不就是相当占位符一样吗?i+j返回的类型不也是int型吗?如果是string返回也是一个字符串.
      

  3.   

    首先,从泛型的角度来看,你的代码有问题。首先,i j虽然都是泛型,但是+的出现要求他们都是支持+运算的,这是表达式正确的第一要求。Int,String自然没有问题,不过其他类型怎么办——特别是不支持+的类型怎么办?所以你需要对T做出约束才对。
      

  4.   

    Console.WriteLine("hello " + t.ToString());
      

  5.   

    楼上正解
    因为在 C# 里所有的对象都有 ToString() 方法(就算你没写系统也帮你写了一个,从Object继承的)
    所以 "hello " + t.ToString() 一定可以正确运行