我有以下方法:
public string Phase(string phase)
{
return "Phase 1";
}
问题是我需要它在2个不同的标签中输出2个字符串:
“第1阶段”
“第2阶段”
我有办法做到这一点吗?
答案 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];
答案 1 :(得分: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;