Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么赋值的左侧必须是变量属性或索引器?_C#_.net - Fatal编程技术网

C# 为什么赋值的左侧必须是变量属性或索引器?

C# 为什么赋值的左侧必须是变量属性或索引器?,c#,.net,C#,.net,为什么我不能做这个测试()。。。; 谢谢。赋值必须有一个存储赋值的位置,并且必须是变量或属性(indexer是一种特殊的属性) 属性赋值将以静默方式转换为方法调用 private ArrayList arr = new ArrayList(); private ArrayList Test() { return arr; } private void WhyMustVariable() { Test() = new ArrayList(); // error: left-h

为什么我不能做这个测试()。。。;
谢谢。

赋值必须有一个存储赋值的位置,并且必须是变量或属性(indexer是一种特殊的属性)

属性赋值将以静默方式转换为方法调用

private ArrayList arr = new ArrayList();

private ArrayList Test()
{
    return arr;
}
private void WhyMustVariable()
{
    Test() = new ArrayList();   // error: left-hand side of an assignment must be a variable property or indexer
}
其中
Test()
返回的内容不能用作赋值的目标,因为返回的是一个值,而不是一个变量(或属性)。

在编写
Test()时。xyz=xxx
首先执行
Test
,它会自动返回
数组列表的某个实例(BTW.现在你应该考虑使用<代码>清单>代码>,现在它是强类型的,因此可以安全地将列表中的每一个元素转换为它的实际类型)。现在你当然可以用那个实例做你想要的,例如调用另一个方法或设置它的任何属性。这相当于这样做:

Test() = ...
但是,当使用
test()=…
时,您将为方法的返回值指定一个新值,这显然毫无意义

我想您需要的是为您的方法提供一些参数。为此,您的方法还应该期望:

这样称呼它:

ArrayList test(int myInt)
{
    // do something with myInt
}

您的意思是如何将变量传递给方法?您希望尝试做什么?Test()是一种方法,您只能为属性和字段赋值;arr=new ArrayList()或arr=GetData()。因为您尝试执行的操作毫无意义。您可以为变量赋值,但不能为方法赋值。您希望该代码做什么?您认为以后如何访问新的
ArrayList
?在
Test()之前
returns,它的返回值和
arr
字段没有关系,尽管一个字段复制了另一个字段。@TangWentian:这是对一个方法的调用。我真的无法想象为什么你会认为它是一个变量。如果那行代码确实编译了,你希望它做什么?你可以与方法,您可以将方法的结果(或任何其他值)分配给变量,但不能分配给非变量的对象。我记得“属性是一个特殊的方法”。(不确定,是否正确)。属性可以分配,为什么方法不能。首先,感谢您的回答。错误告诉我,左边的“Test()不是变量。但是,在我看来,Test()返回arr,为什么Test()不是变量。@TangWentian不,它是一个表达式,它的结果可以存储到变量中。@TangWentian-
Test()
不返回
arr
。它返回对
arr
当前引用的同一对象的引用。正如我在注释中指出的,当它成为
Test()
的返回值时,该返回值与
arr
字段没有关系。
ArrayList test(int myInt)
{
    // do something with myInt
}
var list = test(3);