2013-02-18 63 views
1

我遇到了奇怪的WCF問題,並將參數作爲參數傳遞。WCF和參數參數

比方說,我有一個類:

Class MyClass 
{ 
    public string str; 
} 

和代碼塊這樣的:

List<MyClass> c = new List<MyClass>(); 
c.Add(new MyClass()); 
MyClass c2 = c[0]; 

如果我再打電話應該更新類的STR-屬性WCF方法:

WCFService.UpdateStr(ref c2); 

的C [0]和c2是不同的 - 不應該它們包含在STR-屬性相同的字符串!?通過ref函數參數在WCF中有什麼錯誤?

+0

你對'MyClass.str'一個'[數據成員]'屬性? – 2013-02-18 21:15:28

回答

5

不,他們不應該。通過引用傳遞的參數意味着對象本身可以更改,並且在WCF調用的情況下,它是。當調用UpdateStr返回時,c2引用一個不同的對象實例。

下圖顯示了這種情況下發生了什麼。

enter image description here

+0

感謝您的非常具有說明性的圖片!在設計WCF應用程序時一定要考慮到這一點! – Jaska 2013-02-18 21:34:46

+0

這不限於WCF。任何參數用'ref'標記的方法都可以改變對象引用(我只是知道WCF *總是*)。在設計任何使用'ref'參數調用方法的代碼時,應該考慮到這一點。 – carlosfigueira 2013-02-18 21:39:36