获取此错误消息非常令人困惑,因为this.property = value
完全有效。很明显,这可以用来设置值。但是,当将此作为参考传递给函数时,它会出错,并说明上述内容。如何将这个传递给期望参考的函数?
答案 0 :(得分:-2)
" this"关键字在用作参数时并不是非常直观。以下内容应该有助于澄清它。
public void myFunction(ref myClass input) {}
是一个期望引用myClass
实例的函数,例如,如果您打算能够从myClass
的实例可能是本地的某个地方调用此函数,则可以使用变量。很奇怪,但以下引发了错误
myFunction(ref this);
this
在myClass
的定义中没有意义。问题来自于this
不是变量。相反,它必须由Object传递。 this
是可变的,意味着接收它作为参数的函数可以改变它,this
引用的对象也会改变,不像具有按值传递语义的类型(int,long,object,dynamic) )。
要解决此问题,请为myFunciton()
创建一个期望myClass
而不是ref myClass
的重载
另外一个重要提示:尝试input = new myClass
无效。它会使程序崩溃,所以永远不要将this
传递给试图直接设置其输入值的函数。这是因为你无法分配引用,尽管它的属性是可访问的,因此可以使用它来设置。
this
只读,this
的属性不是。这是一个与众不同的不寻常的属性,我实际上认为如果它实际上是我可以故意使用的话会很有趣。