首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#索引器返回变量或值吗?

C#索引器返回变量或值吗?
EN

Stack Overflow用户
提问于 2014-01-04 10:47:43
回答 1查看 272关注 0票数 1

可变结构容易出错;当dictionary[0].Inflate(1,1)是矩形时,T的行为与array[0].Inflate(1,1)不同(因为array[0]是变量,而dictionary[0]是值)。

如果我为SomeClass定制了一个索引器

代码语言:javascript
复制
public T this[int x, int y] { get { return arr[y*100+x]; } }

someclass[x,y]是变量还是值,还是两者都不是?当然,假定Tstruct

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-04 10:56:01

索引器访问表达式最初被归类为“索引器访问”。来自C# 4规范7.6.6.2节:

处理索引器访问的结果是一个被归类为索引器访问的表达式。

然后从第7.1节:

属性访问或索引器访问总是通过对get-访问器或set-访问器的调用将其重新归类为值。

所以基本上你可以把它看作是一种价值。

但是,数组访问被归类为变量表达式。来自C# 4规范7.6.6.1节:

求数组访问的结果是数组元素类型的一个变量.

这就是为什么这很好

代码语言:javascript
复制
string[] x = { "", "", "" };
SomeMethodWithRef(ref x[0]);

但这不是:

代码语言:javascript
复制
List<string> x = new List<string> { "", "", "" };
SomeMethodWitHRef(ref x[0]);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20919940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档