Bool在C#中的操作

时间:2016-06-06 20:34:31

标签: c# mvvm mvvmcross

我有以下代码按预期工作。我想知道我怎么能够处理bool操作。如果IsEnded为真,我希望EnrolledTimeFormatted返回给我None,如果没有,那么只需返回我现在返回的内容。

private bool _isEnded;
public bool IsEnded
{
  get
  {
    return _isEnded;
  }
  set
  {
     _isEnded = value;
     RaisePropertyChanged(() => IsEnded);
  }
}        

private DateTime _enrolledTime ;
public DateTime EnrolledTime
{
   get { return _enrolledTime ; }
   set
   {
      _enrolledTime = value;
       RaisePropertyChanged(() => EnrolledTimeFormatted);

    }
}

public string EnrolledTimeFormatted=> String.Format("{0:t}", EnrolledTime);

2 个答案:

答案 0 :(得分:2)

一个简单的ternary就可以了。

public string  EnrolledTimeFormatted => 
    IsEnded ? "None" : String.Format("{0:t}", EnrolledTime);

答案 1 :(得分:2)

您应该能够使用条件表达式将其考虑在内:

public string EnrolledTimeFormatted => IsEnded ? "None" : $"{EnrolledTime:t}";

由于更改_isEnabled会影响EnrolledTimeFormatted的值,因此IsEnded的设置者应触发EnrolledTimeFormatted的属性更改,同时触发IsEnded的更改本身。

注意:由于您无论如何都在使用C#6功能,因此您也可以使用插值字符串来缩短表达式。