0

这是导致问题的行:

lblClimberInfo.Text = selectedClimber + "\r\n" + "Finished: " + selectedClimber.HasFinished ? "Yes" : "DNF" + "\r\n" + "Time: " + selectedClimber.Hours.ToString("00") + ":" + selectedClimber.Minutes.ToString("00") + ":" + selectedClimber.Seconds.ToString("00");

从我的主要课程:

private bool hasFinished;

public bool HasFinished
{
    get { return hasFinished; }
    set { hasFinished = false; }
}

我想要它,以便它说布尔值Finished: Yes是否HasFinished为真并显示布尔值Finished: DNF是否HasFinished为假并显示它。目前,它Finished: False默认显示,但是当我单击一个按钮时,该按钮运行一个基本上改变布尔值的方法,而不是说它Finished: True只是说Finished:.

我希望能够自定义它而不是输出TrueFalse

4

1 回答 1

1

由于运算符优先级问题,请在三元运算符周围加上括号。否则,“时间”只会显示是否HasFinished为假。

lblClimberInfo.Text = selectedClimber + "\r\n" + "Finished: " + (selectedClimber.HasFinished ? 
  "Yes" : "DNF") + "\r\n" + "Time: " + selectedClimber.Hours.ToString("00") + ":" + 
  selectedClimber.Minutes.ToString("00") + ":" + selectedClimber.Seconds.ToString("00");

此外,您的二传手很有趣:

private bool hasFinished;

public bool HasFinished
{
    get { return hasFinished; }
    set { hasFinished = false; }
}

HasFinished 似乎不可能为真,除非您在班级的其他地方修改私有变量。但是,与其让 setter 始终将属性设置为 false,不如省略 setter,从而使属性为只读。您可能想阅读在 C# 中使用属性

要定义正确的设置器,请改用它:

    set { hasFinished = value; }
于 2013-11-03T21:40:30.733 回答