考虑
public class Tuple<T1, T2>
{
public Tuple(T1 v1, T2 v2)
{
V1 = v1;
V2 = v2;
}
public T1 V1 { get; set; }
public T2 V2 { get; set; }
}
public static class Tuple
{
// MAGIC!!
public static Tuple<T1, T2> New<T1, T2>(T1 v1, T2 v2)
{
return new Tuple<T1, T2>(v1, v2);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么在上面的工作中标有"MAGIC"的部分?它允许语法
Tuple.New(1, "2")而不是new Tuple<int, string>(1, "2"),但......如何以及为什么?
为什么我不需要 Tuple.New<int,string>(1, "2") ?
这称为泛型类型推断,仅适用于通用方法.你可以传递你想要的任何类型的实例作为参数,New编译器推断你的意思是返回匹配参数的特定通用元组,如Tuple<int, string>...
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |