我有以下方法:
public string Phase(string phase)
{
return "Phase 1";
}
问题是我需要它以 2 个不同的标签输出 2 个字符串:
“阶段1”
“阶段2”
我有办法做到这一点吗?
您有几个选项可以返回多个值。
例如,您可以返回一个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];
如果该方法在您的标签所在的同一范围内(同一表单的一部分),那么您可以在该方法中设置标签的值:
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;