c# - 초기화 - unity stringbuilder




어떻게하면이 조건을 원하는대로 변경할 수 있습니까? (7)

Ternary 연산자를 사용해야한다면 코드를 수정하여 세 가지 값을 만족시킬 수 있습니다.

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

나는 두 가지 가치가있는 조건을 가지고있다. 조건이 0 Absent 반환하고 1 이면 present 반환합니다. 이제 제 조건을 제 조건에 더하고 싶습니다. 조건이 3 경우 Unacceptable absentUnacceptable absent 반환합니다.

이것은 두 가지 가치가있는 내 조건입니다.

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

어떻게 조건을 바꿀 수 있습니까?


그렇게 :

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

나는 너를 돕기를 희망한다.


다음과 같은 것을 사용할 수 있습니다 :

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

그러나이 코드 스타일은 읽기가 쉽지 않습니다. 사전 또는 스위치 / 사례 설명 등을 사용하는 것이 좋습니다.


당신은 "NA"로 failsafe 상태를 추가하고 다음과 같이 할 수 있습니다 :

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

중첩 된 삼항 연산자를 사용하면 간결성을 위해 가독성이 희생됩니다. 대신 겸손한 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}?");
    }
}

최선의 방법은 가능한 한 많은 조건을 없애는 것입니다. 그러면 다음과 같이 할 수 있습니다.

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 # 피들


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

내 생각에 일종의 큰 if & else 트리를 만들 수있는 방법으로 연산자를 중첩 할 수 있습니다. 스위치가 더 읽기 쉬울 것입니다.







asp.net