使用带有此关键字的ref参数?

gre*_*fly 5 c# ref this-pointer

有没有办法强制this关键字作为ref参数?我想传入一个修改对象上的多个属性的访问者,但这只是想要像值参数一样.

对象代码:

public void Accept(Visitor<MyObject> visitor)
{
    visitor.Visit(this);
}
Run Code Online (Sandbox Code Playgroud)

访客代码:

public void Visit(ref Visitor<MyObject> receiver)
{
    receiver.Property = new PropertyValue();
    receiver.Property2 = new PropertyValue();
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*örk 10

由于您实际上并未更改receiver引用的内容,因此不需要ref关键字.但是,如果情况确实如此,那么您将无法this引用另一个实例.

this作为ref参数传递,您需要像这样写:

Visit(ref this);
Run Code Online (Sandbox Code Playgroud)

该代码将无法编译:"无法将'<this>'作为ref或out参数传递,因为它是只读的"


Gra*_*ton 5

如果您Visitor<T>是一个类,那么您不需要ref关键字.

如果在方法中更改了类中的所有信息,则会自动更改这些信息