using Coordinate = (int x, int y);
无法编译。
using Coordinate = System.Tuple<int, int>;
可以编译。
由于某些原因,我更喜欢前者;这可行吗?
更新:
原因受到了质疑和辩论,以下是原因:
我有一个处理元组的小类。我本可以写一个小的元组class Coord{int x; int y;}
,但我决定不这样做。相反,我在每个地方都写了(int x, int y)
,并让鸭子类型发挥其魔力。它运行得很好,但在某些地方阅读起来会有障碍,可能是因为我们习惯将类型读作PascalCase
而不是(pare,the,sised)
。
所以我有一个想法,就像给类型Tuple<int,int>
取一个别名一样,我可以给匿名类型(int x, int y)
取一个别名。然后我可以根据我认为更易读的方式使用别名或匿名类型。
(我的真实代码比x&y稍微复杂一些)
using Coordinate = System.ValueTuple<int, int>;
。( ... )
语法在该上下文中无效,因此您必须实际使用命名空间。 - maccetturastring.empty
,它需要""
。第一个元组是语法糖。那里还没有类型。Using
指令需要已知的类型或命名空间。 - T.S.(int x, int y)
是ValueTuple<int, int>
的简写,但是 带有 有关两个元组项名称的元数据。这是一个完全合法的请求,但编译器不支持它,因为尚未添加支持。 - Lasse V. Karlsen