2015-01-09 55 views
1

我想在方法中使用out關鍵字返回一個字符串,並在另一個方法中使用方法和out的返回結果。但是,儘管我發現它在調試過程中立即將變量StringD設置爲調試方式2,但隨着Method1開始,StringA變爲空白。out關鍵字不能在C#中的方法中使用方法

我希望當它將MethodD中的StringD設置爲「Test」時,它會立即傳回到main中以便在Method1中使用,因此它可以在兩行中完成。這是打算或C#中的錯誤?我必須用4條線代替嗎?

我列出了次級主這只是使得它成爲我測試,沒有工作設置STRING天,以「測試」

在我的主要

String StringD = ""; 
Method1(StringD, Method2(out StringD, "")); 

次級主(這一個工作,但四大行我寧願使用第一)

String StringD = ""; 
Boolean BoolC = false; 
BoolC = Method2(out StringD, ""); 
Method1(StringD, BoolC); 

我的方法

private void Method1(String StringA, Boolean BoolA) 
{ 
    String StringE = ""; 
    Boolean BoolB = false; 

    StringE = StringA; 
    BoolB = BoolA; 
} 

private Boolean Method2(out String StringB, String StringC) 
{ 
    StringB = ""; 
    if (StringC == "") 
    { 
     StringB = "Test"; 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 
+1

您應該真的重構該方法來返回值,而不是使用'out'參數。它會讓你的生活變得更容易。 – Servy 2015-01-09 20:01:45

回答

1

可以在Method1

private void Method1(Boolean BoolA, String StringA) 
{ 
    String StringE = ""; 
    Boolean BoolB = false; 

    StringE = StringA; 
    BoolB = BoolA; 
} 

改變參數順序然後調用它像這樣:

Method1(Method2(out StringD, ""), StringD); 

這樣的Method2StringD之前調用傳遞給方法。

+2

當然,這絕對可以解決您的問題,但我建議您在調用Method1之前先自行調用Method2。將它組合成一行並不是對程序的優化,因爲需要分配相同的變量,並且以相同的順序進行相同的函數調用,但是您剛剛使這個函數調用鏈更難以達到50倍閱讀,理解和調試,全部保存一行代碼。舉個例子:首先提出這個問題。 – dodexahedron 2015-01-09 20:22:10

相關問題