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>
一个别名。然后我可以使用别名或匿名类型,具体取决于我认为更具可读性。(我的真实代码比 x&y 稍微复杂一些)
即使
[System.Runtime.CompilerServices.TupleElementNames(new string[] {"x", "y"})]
System.ValueTuple<int, int> myVar = ...
编译,我想针对您可能想要实现的目标提出一种不同的方法:
using Coordinate = System.Tuple<int, int>;
您可以通过
public class Coordinate
{
public Coordinate(int x, int y)
{
X = x;
Y = y;
}
public int X { get; set; }
public int Y { get; set; }
}
var coordinate = new Coordinate(xVariable, yVariable);
或
X
访问您的 Y
和 coordinate.X
变量。正如maccettura如果您稍后尝试更改元组的坐标,则会限制您,因为它的项目在创建后无法修改
coordinate.Y