我遇到了WCF的奇怪问题,并将参数作为ref传递.
假设我有一个班级:
Class MyClass
{
public string str;
}
Run Code Online (Sandbox Code Playgroud)
和这样的代码块:
List<MyClass> c = new List<MyClass>();
c.Add(new MyClass());
MyClass c2 = c[0];
Run Code Online (Sandbox Code Playgroud)
如果我然后调用应该更新该类的str属性的WCF方法:
WCFService.UpdateStr(ref c2);
Run Code Online (Sandbox Code Playgroud)
c [0]和c2是不同的 - 它们不应该在str属性中包含相同的字符串!?通过ref函数参数在WCF中有什么问题吗?
不,他们不应该.通过引用传递的参数意味着可以更改对象本身,并且在WCF调用的情况下,它是.当调用UpdateStr返回时,c2引用一个不同的对象实例.
下图显示了此方案的进展情况.
