为什么我需要这样的东西有哪些实际案例:
public void Show<FirstType, SecondType>(FirstType first, SecondType second)
{
//Do Something
}
而不仅仅是这个:
public void Show(FirstType first, SecondType second)
{
//Do Something
}
非常感谢
答案 0 :(得分:2)
此示例来自框架,但LINQ扩展方法以这种方式实现。例如,.Where的签名是:
IEnumerable.Where<TSource> (IEnumerable<TSource>, Func<TSource, Boolean>);
这并没有像你的例子那样有两个类型的参数,但是显示了一个很好的用例。 &#34; Where&#34;不是特定于类型的,并且因为稍后给出的谓词使用相同的类型参数,所以在执行比较时会获得类型安全性。
这远远优于a。对于每种可能的类型,因此使用泛型。
答案 1 :(得分:1)
因为你需要为这样的事情创建另一种方法,在某些情况下可能会重复。为避免重复逻辑,当类型有一些共同的行为时,您使用泛型。此外,它的类型安全,因此当您使用泛型时不需要装箱/取消装箱。
public void Show(ThirdType third, FourthType fourth)
{
//Do Something
}
答案 2 :(得分:0)
我可以简单地使用泛型,例如,比较相同类型的两个变量并根据相等性返回true或false的方法:
public static bool Equals<T>(T Variable1, T Variable2)
{
return Variable1.Equals(Variable2);
}
此方法现在可以重用于任何参数类型。 T代表类型,通常以这种方式编写,但不一定。使用此类,您可以比较在main方法中定义的任何类型的相等性,而无需在方法内部装箱/取消装箱类型。另外,在main方法中使用它时,您的等式比较方法对于错误的类型输入是安全的。使用此方法的示例如下:
public static void Main(string[] args)
{
if (VarCompare<int>(10, 10))
{
Console.WriteLine("Inputs are equal.");
}
else
{
Console.WriteLine("Inputs aren't equal.");
}
}
只需将if条件更改为VarCompare<string>("A", "B")
即可比较两种字符串类型而不是整数。
答案 3 :(得分:0)
当你想要两个具有不同类型的通用参数时,一个很好的例子是Dictionary<TKey, TValue>
http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx