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);
}
}
为什么会参与上述工作标有“魔力”?它允许类似于 Tuple.New(1, "2")
而不是new Tuple<int, string>(1, "2")
的语法,但是......如何以及为什么?我为什么不需要Tuple.New<int,string>(1, "2")
?
这是C#的更有趣的(在我看来)的功能之一。这里比你的简单例子要复杂得多。如果你对一些更复杂的场景感兴趣,下面是我对他们做的一个视频:http://blogs.msdn.com/ericlippert/archive/2006/11/17/a-face-made-for-email -part-three.aspx – 2009-12-02 16:07:41