C#在特定索引处为List <string>赋值

For*_*ent 0 c#

让我们考虑这段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)

然后我得到一个错误,说左侧必须是一个变量.

对于引用类型和值类型,此语法的行为方式相同.谁能解释为什么第二种语法有缺陷?

Dav*_*vid 5

这是一个返回值的方法调用:

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)