在vs2010 C#中有更好的方法吗?
public bool IsAccept()
{
//check the status is accept
if (Status == null)
return false;
return Status.ToLower() == "accept";
}
public bool IsRefer()
{
//check the status is refer
if (Status == null)
return false;
return Status.ToLower() == "refer";
}
public bool IsAnyReviewState()
{
if (IsAccept() || IsRefer())
return true;
return false;
}
也许是C#4的一种简化方式,我还在学习。
答案 0 :(得分:1)
这个怎么样?
public bool IsAnyReviewState()
{
return new [] {"accept", "refer"}.Contains((Status??string.empty).ToString().ToLower())
}
答案 1 :(得分:1)
您可以使用短路评估来使代码更精确。 BTW。 C#4没有具体的内容。
public bool IsAccept()
{
//check the status is accept
return Status != null && Status.ToLower() == "accept";
}
public bool IsRefer()
{
//check the status is refer
return Status != null && Status.ToLower() == "refer";
}
public bool IsAnyReviewState()
{
return IsAccept() || IsRefer();
}
答案 2 :(得分:1)
String.Equals
或String.IndexOf
与StringComparison.OrdinalIgnoreCase
一起使用,而不是String.ToLower() ==
。此外,如果你绝对必须规范化字符串,那么使用String.ToUpperInvariant
,因为它保留了在执行ToLowerInvariant
时丢失的某些信息,这会影响非拉丁语言,例如土耳其语,它具有类似I字符的特殊行为String.IsNullOrEmpty
IsAnyReviewState
。以下是我编写代码的方法:
public bool IsAccept {
get {
return String.IsNullOrEmpty( this.Status ) ? false : this.Status.Equals("accept", StringComparison.OrdinalIgnoreCase);
}
}
public bool IsRefer {
get {
return String.IsNullOrEmpty( this.Status ) ? false : this.Status.Equals("refer", StringComparison.OrdinalIgnoreCase);
}
}
public bool IsAnyReviewState {
get {
return this.IsAccept || this.IsRefer;
}
}
答案 3 :(得分:1)
我会这样使用ternary operators:
public bool IsAccept()
{
//check the status is accept
return Status == null ? false : Status.ToLower() == "accept";
}
答案 4 :(得分:0)
public bool IsAccept()
{
return (Status == null)?false:(Status.ToLower() == "accept");
}
等等......
答案 5 :(得分:0)
就个人而言,我更喜欢使用string.Equals
进行字符串比较。在IsAccept()
的情况下,我会写:
public bool IsAccept()
{
return string.Equals(Status, "accept", StringComparison.InvariantCultureIgnoreCase);
}
这使您免于撰写防御性null
- 支票,并且不需要.ToLower()
。
少代码:=快乐的编码器
修改:Status
属性是否需要string
?您可以将它替换为枚举吗?
答案 6 :(得分:0)
正如RvdK所说,这个问题应该在CodeReview。此外,我不确定您是否正在尝试使代码更紧凑或更易读。
如果您想让它更具可读性,那么唯一想到的就是修改return
语句。
例如,而不是
return Status.ToLower() == "accept";
考虑
if(Status.ToLower() == "accept")
return true;
else
return false;