【发布时间】:2018-11-24 01:18:00
【问题描述】:
我想知道为什么这不能按我预期的方式工作。这只是“运送就是选择”的问题,还是有一个很好的实际理由,我所期望的行为是有问题的。
考虑这个变量定义:
int[,] a
还有这个函数签名
(int, int) FindIndex(int[,] a)
鉴于这些,我希望这会起作用:
int index = a[FindIndex(a)];
但它没有,它给出:
CS0022 [] 内的索引数量错误;预计 2
我没有检查规范,但我确信这符合规范,所以我不质疑实现是否正确,肯定是。我想知道的是,是否有任何实际原因和/或考虑不支持此功能?
【问题讨论】:
-
显然是因为它只是 ValueTuple
的语法糖 ...并且它不能成为 int[,] 的索引器 -
我认为问题在于大多数元组实际上在那里是无效的。它只是
(int,int)的具体示例,这是有意义的,并且可能不值得付出所有努力使其适用于不会真正为语言添加任何额外功能的东西。 -
@Selvin 听起来有点天真。你可以做
x,y = FindIndex(a),其中x和y是ints,尽管它是ValueTuple<int,int>。它不能是索引器,因为规范中不支持它。问题是这样做是否有充分的理由。 -
你的意思是
(x,y) = FindIndex(a);被翻译成ValueTuple<int, int> valueTuple = FindIndex(a); x = valueTuple.Item1; y = valueTuple.Item2;... insa[FindIndex(a)];没有要分配的变量
标签: c#