2012-06-18 141 views
0

我有以下方法:一種方法執行兩個功能

public string Phase(string phase) 
{ 
    return "Phase 1"; 
} 

的事情是我它需要輸出2串在2個不同的標籤:

「第1階段」

「相位2「

有沒有辦法讓我這樣做?

+0

是什麼語言? – Seki

+0

你能對你想要做的事情做更具體的描述嗎?你是否試圖用該方法返回兩個字符串值?另外你使用什麼語言? – NominSim

+0

它不是'返回'階段「+階段;'? –

回答

5

您有幾個選項可以返回多個值。

例如,您可能會返回IEnumerable<string>(或其他某個集合)。您也可以返回Tuple<string,string>

public IEnumerable<string> Phase() 
{ 
    yield return "Phase 1"; 
    yield return "Phase 2"; 
} 

或者

public Tuple<string,string> Phase() 
{ 
    return Tuple.Create("Phase 1", "Phase 2"); 
} 

話雖這麼說,這可能是簡單的使用兩種不同的方法(或屬性)返回,而不是試圖迫使它進入一個單一的方法調用每個字符串。

另一種方法是在允許的方法來選擇哪個標籤返回的參數傳遞:

public string Phase(int phase) 
{ 
    switch(phase) 
    { 
     default: 
      return "Phase 1"; 
     case 2: 
      return "Phase 2"; 
    } 

    // Or just 
    // return "Phase " + phase.ToString(); 

} 

編輯:

考慮您的意見,我會建議一個屬性,剛剛返回一個數組:

public string[] Phases 
{ 
    get { return new[] { "Phase 1", "Phase 2" }; } 
} 

然後你可以使用這個:

var phases = this.month1.Phases; 
this.lblPhase.Text = phases[0]; 
this.lblPhase2.Text = phases[1]; 
+0

很不錯的,工作還是第一次。非常感謝里德!我記得在未來也會使用數組。善於有時看到其他人如何對付這些情況。謝謝。 – Simagen

3

如果方法是相同的範圍內(同一形式的一部分)在您的標籤,然後在方法中你可以設置標籤的值:

public void Phase(string phase) 
{ 
    label1.Text = "Phase 1"; 
    label2.Text = "Phase 2"; 
} 

如果是不一樣的範圍,因爲你的標籤內,而你正在返回爲標籤的值設置爲,您可以使用一個元組:當您收到值回從返回設置標籤

public Tuple<String, String> Phase(string phase) 
{ 
    return new Tuple<string, string>("Phase 1", "Phase 2"); 
} 

然後像這樣:

編輯,以反映OP的重定向

var answer = month1.Phase("Phase"); 
label1.Text = answer.Item1; 
label2.Text = answer.Item2; 
+0

我已經把 public tuple Phase(string phase) { }返回新的元組(「Phase 1」,「Phase 2」); } 放入我的Month1類。 然後在我的主程序中,我有以下內容: var answer = this.month1.Phase(「Phase」); 這就是我將如何做你說的,但調整它,所以它可以指我的課。 這是正確的,因爲我得到最後一個代碼的語法錯誤。 – Simagen

+0

@cameron這很難說,但應該是這樣。假設你創建一個month1類的實例爲Month1 month1 = new Month1();'你得到的語法錯誤是什麼? – NominSim

+0

@NorimSim,是的,我有我的班級實例。您如何建議我現在將解決方案實施到表單中?這裏是我的代碼裏面的形式: var answer = this.month1.Phase(「Phase」); 給我錯誤:以下方法或屬性之間的調用不明確:Month1.Phase(string)和Month1.Phase(string) this.lblPhase.Text = String.Format(「{0}」,this.month1 。相(」」)); 給我同樣的錯誤 – Simagen