我明白这个规则。但谁知道这是为什么呢?
如果我的代码是:
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/