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