[英]In C#, can I send an out parameter to be used elsewhere
我有一個函數,由代碼的另一部分調用,簽名:
public override bool DoSomething(Foo f, out string failed)
{
failed = "I failed";
_anotherClassMethodExpectingString.SetString(failed);
}
所以我的問題是 - 如果我需要將其他類方法發送給我的調用者在其“out”參數中預期的相同字符串,我可以只發送相同的變量,而不會對我的調用者產生任何影響嗎? “out”參數對我來說有點混亂..我應該使用這樣的東西代替:
public override bool DoSomething(Foo f, out string failed)
{
string localStr = "I failed";
failed = localStr;
_anotherClassMethodExpectingString.SetString(localStr);
}
除非您調用的后續方法也使用out參數,否則無需定義局部變量。 該字符串不受任何常規參數傳遞的影響。
如果您不希望或不希望您的方法調用者看到第三種方法的任何更改,那么您擁有的就沒有問題。 如果我正確地閱讀你的問題,這似乎是你的意圖。
如果您希望調用者反映第三種方法引入的更改,那么它也需要是一個out
參數,或者通過返回值返回修改,然后在返回之前將其分配給原始輸出參數。
如果為沒有ref
或out
的方法聲明了參數,則該參數可以具有與之關聯的值。 該值可以在方法中更改,但是當控制傳遞回調用過程時,不會保留更改的值。
鑒於字符串在.NET中是不可變的,所以在沒有ref
和out
字符串參數的情況下將failed
傳遞給任何方法都是安全的,並確保它不會被更改。
out參數類似於c ++中對象的指針。 因此,如果您不使用'out'定義器,則不會更改參數的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.