通用方法语法澄清

时间:2009-11-12 03:00:36

标签: c# generics

1)当我有

Static void Sample<T>(T a,T b) 

声明Sample是否强制所有参数都必须是T?

2)除非我指定,否则声明Static void Sample(T a,T b)不是通用方法   Sample<T>

4 个答案:

答案 0 :(得分:5)

1)否,Static void Sample<T>(T a,T b)不强制所有参数都是T类型。您也可以在方法参数中包含其他参数。编辑: - 您可以有Sample(T a,int b,string s)(如果这是你的意思)

2)是的,Static void Sample(T a,T b)是非泛型的,编译器会抛出关于类型T的异常(如果你没有一个名为T的分类)

答案 1 :(得分:1)

  1. 实际上,在您的示例中,两个参数都是T类型,因此需要..um ..类型为T.您当然可以声明使用不同类型的方法。

    static void Sample&lt; T&gt;(T a,SomeType b)

  2. 是的,除非您指定样本&lt; T&gt; (T a,T b)

  3. ,否则它不是通用的

答案 2 :(得分:1)

1)是

2)是的,这是通用方法的无效语法

编辑:更接近即时回答:)

答案 3 :(得分:1)

  1. 是的,声明强制所有声明的参数都必须是T类型。

  2. static void Sample(T a, T b)将无法编译(除非您有类型T),因为它不是通用声明。您需要声明为通用。