c# - 使用 using 声明一个匿名元组;可能吗?
问题描述
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 稍微复杂一些)
解决方案
不,不能使用前者,因为它不是有效的 C# 语法。
即使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
coordinate.Y
正如maccettura所指出的,我应该包括我对这种方法的推理:
- 如果您稍后尝试在 Tuple 上更改坐标将限制您,因为它的项目在创建后无法修改
- 此外,我认为您可能想为您的坐标添加更多功能,例如使用 a
ToString()
或其他方法/属性
推荐阅读
- istio - 流量拆分是否需要 Istio 入口网关?
- javascript - Material UI TextField input type="date" 没有得到 event.target.value
- matlab - 如何在 Matlab 中将表格保存到 Excel(使用特定路径)?
- sql-server - t-sql 中是否可以使用某种 foreach 语句?
- python - ValueError:无法将大小为 40000 的数组重塑为形状 (1,32,32,3)
- spring-boot - 数据库重启后Springboot应用程序失败
- sqlite - 如何限制sqllite中的结果
- python - 如何检查两个数组是否相等但符号相反?
- c# - Task.Run 和 CancellationToken。在这种情况下取消是如何工作的?
- git - 链接 Oracle 和 GitHub