【发布时间】:2017-04-28 17:35:03
【问题描述】:
C# 7 有一个新特性允许我们轻松定义元组,因此我们可以轻松处理包含多个值的结构。
有没有办法将元组用作泛型类型约束或类似的?例如,我尝试定义以下方法:
public void Write<T>(T value)
where T : (int x, int y)
{
}
我意识到这个特定的例子是毫无意义的,但我想在其他情况下,拥有一个包含从另一个类型派生的类型的元组会很有用:
static void Main(string[] args)
{
var first = new Derived();
var second = new Derived();
var types = (t: first, u: second);
Write(types);
Console.ReadLine();
}
public static void Write((Base t, Base u) things)
{
Console.WriteLine($"t: {things.t}, u: {things.u}");
}
public class Base { }
public class Derived { }
此示例不起作用,因为 first 和 second 的类型为 Derived。如果我将它们设为Base 类型,则效果很好。
【问题讨论】: