可变结构容易出错;当dictionary[0].Inflate(1,1)是矩形时,T的行为与array[0].Inflate(1,1)不同(因为array[0]是变量,而dictionary[0]是值)。
如果我为SomeClass定制了一个索引器
public T this[int x, int y] { get { return arr[y*100+x]; } }someclass[x,y]是变量还是值,还是两者都不是?当然,假定T是struct。
发布于 2014-01-04 10:56:01
索引器访问表达式最初被归类为“索引器访问”。来自C# 4规范7.6.6.2节:
处理索引器访问的结果是一个被归类为索引器访问的表达式。
然后从第7.1节:
属性访问或索引器访问总是通过对get-访问器或set-访问器的调用将其重新归类为值。
所以基本上你可以把它看作是一种价值。
但是,数组访问被归类为变量表达式。来自C# 4规范7.6.6.1节:
求数组访问的结果是数组元素类型的一个变量.
这就是为什么这很好
string[] x = { "", "", "" };
SomeMethodWithRef(ref x[0]);但这不是:
List<string> x = new List<string> { "", "", "" };
SomeMethodWitHRef(ref x[0]);https://stackoverflow.com/questions/20919940
复制相似问题