当我需要传递Generic Type时,我可以使用语法
(例如:当然它不是通用方法)
public void Sample(T someValue)
{
......
}
Run Code Online (Sandbox Code Playgroud)
宣布有Sample<T> 什么好处?
我的意思是
public void Sample<T> (T someValue)
{
......
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 12
泛型类型和泛型方法是非常不同的东西.听起来你有一个通用的类型:
class SomeType<T> {
public void Sample(T someValue) {...}
}
Run Code Online (Sandbox Code Playgroud)
并正在讨论其中的通用方法:
class SomeType<T> {
public void Sample<T>(T someValue) {...}
}
Run Code Online (Sandbox Code Playgroud)
这些是非常不同的.在第一个,里面Sample,然后T意味着" T被传递到SomeType<T>".在第二个,在里面Sample,这是一个独立和独立 T - " T传递到Sample<T>".实际上,调用它T(在这种情况下)是一个错误.你可以,例如:
var obj = new SomeType<int>(); // here T for SomeType<T> is int
obj.Sample<decimal>(123.45M); // here T for Sample<T> is decimal
Run Code Online (Sandbox Code Playgroud)
请注意,说" in in " 没有简单的方法(内部Sample<T>)- 因此您应该重命名方法的泛型类型参数.TSomeType<T>
例如,对于这种类型的场景(泛型类型的通用方法)有一些有效的场景(并注意新名称):
class SomeType<T> {
public void Sample<TActual>(TActual someValue) where TActual : T, new() {...}
}
Run Code Online (Sandbox Code Playgroud)
这允许我们在继承等方面做一些非常有趣的事情 - 或者你可能想要一个与它几乎没有关系的泛型方法T.那也没关系.