代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

泛型类和泛型方法

  •  1
  • GurdeepS  · 技术社区  · 15 年前
    class test <T> where T : class
    {
        public void Write<T>()
        {
            Console.Write(typeof(T).FullName);
        }
    }
    

    在上面的类中,可以为类传入一个字符串( test<string> Test = new test<string> )然后是方法的int?如果是,输出是什么?如果没有,这会导致什么问题?尽管经常使用泛型(在我自己的类中)和泛型集合,但实际上我没有尝试过这种方法。

    我编写/查看泛型类的方式如下:

    class <T> where T : class
    {
        public T Write()
        {
            Console.Write(T.ToString());
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  3
  •   JaredPar    15 年前

    正如最初写的那样,不,你不能。为了在类中的不同点上使用不同的类型,必须具有多个泛型参数。可以在方法级别定义不同的方法,并让您的示例正常工作。

    class Test<T> where T : class {
      public void Write<U>(U arg1) {
        Console.WriteLine(arg1.ToString());
      }
    }
    

    用法

    var t = new Test<string>();
    t.Write(42);
    

    正如Scott指出的,您可以使用相同的命名参数。尽管这样做会引起警告,一般来说会使人困惑。对于当前在作用域中的所有泛型参数,使用不同的名称要简单得多。

        2
  •  0
  •   thecoop    15 年前

    您将希望在方法中分别向类声明一个类型变量。-

    class Test<T> where T : class {
    
        public void Method<U>(U val) {
            Console.WriteLine(typeof(U).FullName);
        }
    
    }