c# - 为什么我不能将索引器作为 ref 参数传递?

标签 c# .net indexer ref-parameters

我明白这个规则。但谁知道这是为什么呢?

如果我的代码是:

List<T> x = new List<T>;
x.Add(new T());
x.Add(new T());
x.Add(new T());

int y = 2;

//And I call a method 
M1(ref x[y]);

ref x[y] 只是一个指向我感兴趣的 T 实例的指针,不是吗?

为什么我不能以非常简单的方式编写称为 M1() 的代码行。

.

我知道解决方法:

T cX = x[y];
M1(ref cX);

我希望听到为什么 C# 的架构师需要这个额外的步骤来传递指针?还是编译器限制?

最佳答案

索引器值不属于变量;因此,您不能将索引器值作为 ref 或 out 参数传递。

引用msdn

关于c# - 为什么我不能将索引器作为 ref 参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40424370/

相关文章:

c# - Java 等同于 C# 中的 IEnumerator?

c# - 使用 OrderBy 对列表进行排序

.net - 用于检查哪个机器人访问过的分析 API

c# - 如何在 XML 序列化后没有列表元素的包装器元素

perl - 不能使用字符串作为哈希引用..?

c# - P/Invoke问题(栈不平衡)

c# - 这些参数有什么问题?

c#二进制序列化到文件逐行或如何分离

c# - "Item"属性以及索引器

c# - 在 C# 中将索引器作为参数传递