我如何才能将此条件更改为我想要的

时间:2019-06-13 06:00:10

标签: c# asp.net

我有一个带有两个值的条件。如果条件等于0,则返回Absent;如果条件等于1,则返回present。 现在我想将第三个值添加到我的条件中。如果条件等于3,则返回Unacceptable absent

这是我的条件,具有两个值:

(status >= 1 ? "Present" : "Absent")

如何更改条件?

10 个答案:

答案 0 :(得分:17)

使用查找字典。

//Initialized once in your program
var lookup = new Dictionary<int,string>
{
    { 0, "Absent"},
    { 1, "Present"},
    { 3, "Unacceptably Absent" }
};

//Call this whenever you need to convert a status code to a string
var description = lookup[status];

答案 1 :(得分:14)

使用嵌套三元运算符会为了简洁而牺牲可读性。我建议改用谦虚的switch语句:

string foo(int status)
{
    switch (status)
    {
        case 0:
            return "Present";
        case 1:
            return "Absent";
        case 3:
            return "Unacceptable absent";
        default:
            throw new ArgumentOutOfRangeException(nameof(status), $"What kind of person passes {status}?");
    }
}

答案 2 :(得分:4)

您可以将故障安全状态添加为“ NA”,并执行以下操作:

status == 0 ? "Absent" : status == 1? "Present" : status == 3? "Unacceptable Absent" : "NA";

答案 3 :(得分:4)

我建议对@Shubhams方法更易读,例如:

string foo(int status)
{
    if (status == 0)
        return ("Present");
    else if (status == 1)
        return ("Absent");
    else if (status == 2)
        return ("Somthing else");
    else
        return ("Outside");
}

答案 4 :(得分:3)

status >= 1 ?(status >2?"third Value":"Present") : "Absent"

喜欢

答案 5 :(得分:3)

最好的方法是尽可能地消除其他情况,这就是您的做法:

public static class AppStartupConfig
{
    public static Dictionary<int,string> AttendanceStatus = new Dictionary<int,string>();

    public static void InitAppStuff(){
        //Bring basic data from database
        //fill the list looping data for e.g:
        if(AttendanceStatus.Count == 0){
           AttendanceStatus.Add(0,"Absent");
           AttendanceStatus.Add(1,"Present");
           AttendanceStatus.Add(3,"Unacceptable absent");
        }
    }
}

要使用它,您将不需要整个应用程序,只需在应用程序启动时运行此方法,然后通过提供此字典的键即可获得价值,例如:

    AppStartupConfig.InitAppStuff();
    Console.WriteLine(AppStartupConfig.AttendanceStatus[3]); //returns respective string value

C# fiddle

答案 6 :(得分:2)

(status == 0 ? "Absent" : status == 1 ? "Present" : status == 3 ? "Unacceptable" : "Unknown status")

您可以嵌套运算符,以这种方式,您可以创建大的if&else树,在我看来,这是可读的。开关将更具可读性。

答案 7 :(得分:2)

您可以使用以下内容:

status == 0 ? "Absent" : status == 1 ? "Present" : "Unacceptable"

但是这种代码风格可读性不好。最好使用字典或switch / case语句等。

答案 8 :(得分:1)

喜欢:

status == 0 ? "Absent" : status == 1 ? "present" : status == 3 ? "Unacceptable Absent" : 1==1

希望对您有所帮助。

答案 9 :(得分:1)

如果必须坚持使用三元运算符,则可以修改代码以满足三个值。

string tmp = (status == 0 ? "Absent" : (status == 1 ? "Present" : "NA"));