Inline If语句中的默认条件

InT*_*ons 1 .net c# asp.net-mvc-3

我在我的c#代码中获取数据库行.Row包含3个不同的标志(3列具有true或false值).这些列中只有一列为真,这将决定该对象的类型.如何在一行代码中确定该对象的类型.如果所有三个标志都是假的,那么我需要一个默认类型.

var myObject = this.unitOfWork.myRepository.GetMeObject();

 var objectType = myObject .IsA == true
                              ? "A"
                              : myObject .IsB == true
                                    ? "B"
                                    : myObject .IsC == true
                                          ? "C"
                                          : "D";
Run Code Online (Sandbox Code Playgroud)

如果条件均无效,则ObjectType应为D.

任何建议将不胜感激.

谢谢

mus*_*fan 5

就个人而言,我很想为您的数据库对象创建一个扩展方法.像这样的东西:

public static string GetObjectTypeOrDefault(this MyObject myObject)
{
    if(myObject.IsA) return "A";
    if(myObject.IsB) return "B";
    if(myObject.IsC) return "C";
    return "D";
}
Run Code Online (Sandbox Code Playgroud)

然后你会像这样使用它:

MyObject myObject = this.unitOfWork.myRepository.GetMeObject();
string objectType = myObject.GetObjectTypeOrDefault();
Run Code Online (Sandbox Code Playgroud)

您甚至可以null使用此方法检查对象


如果您仍然只想要一行,那么原始尝试将正常工作,但可以稍微清理一下:

var objectType = myObject.IsA ? "A" : myObject.IsB ? "B" : myObject.IsC ? "C" : "D";
Run Code Online (Sandbox Code Playgroud)

  • @sangramparmar:为什么不呢?告诉我证据 (2认同)
  • @sangramparmar - 现在你的证明了我们的观点 (2认同)