让我们考虑这段C#代码:
List<string> a = new List<string>();
a.Add("word1");
a.Add("word2");
Run Code Online (Sandbox Code Playgroud)
现在让我说我想要"word3"而不是word2.我可以说
a[1]="word2";
Run Code Online (Sandbox Code Playgroud)
但如果我试试
a.ElementAt(2) ="word2";
Run Code Online (Sandbox Code Playgroud)
然后我得到一个错误,说左侧必须是一个变量.
对于引用类型和值类型,此语法的行为方式相同.谁能解释为什么第二种语法有缺陷?
这是一个返回值的方法调用:
a.ElementAt(2)
Run Code Online (Sandbox Code Playgroud)
您可以将值存储在变量中,并为该变量分配其他值.但无法将方法调用本身分配给.方法调用不是可以为其分配值的容器.
数组索引器直接引用数组(集合)变量中的元素,您可以为其赋值.方法调用不引用任何东西,它返回一些东西.
所以你可以分配一个变量:
x = "some value";
Run Code Online (Sandbox Code Playgroud)
甚至是集合变量的索引:
x[0] = "some value";
Run Code Online (Sandbox Code Playgroud)
但不是方法调用:
SomeMethod() = "some value";
Run Code Online (Sandbox Code Playgroud)