扩展方法中"T"(TArg0,TEnum,TInt)的含义是什么?

Atr*_*gma -2 .net c# linq extension-methods

我可以定义一个扩展方法来确定一个对象是否为null

public static bool IsNull(this object obj) {
    if (obj == null)
        return true;
    else return false;
}
Run Code Online (Sandbox Code Playgroud)

但我也可以这样做:

public static bool IsNull<T>(this T obj) {
    if(obj == null)
        return true;
    else return false;
}
Run Code Online (Sandbox Code Playgroud)

两者都适用于每个对象.这个T的目的是什么?进一步阐述预期的类型?如果是的话,为什么这样:typeof(T)是可能的?那么(this T obj) where T: int)(在哪里)背后的原因是什么?(正如@MatthewWatson指出的那样,这无论如何都不起作用)

这么多的问题.

Mat*_*son 5

这T是Generic方法的类型参数.

有关泛型的MSDN文档,请参见此处:http://msdn.microsoft.com/en-us/library/512aeb7t.aspx

它与扩展方法没有特别关系; 这与仿制药有关.