c# - come posso cambiare questa condizione con quello che voglio




asp.net (7)

Ho una condizione con due valori. se la condizione è uguale a 0 restituisce Absent e se uguale a 1 restituisce present . ora voglio aggiungere il terzo valore alle mie condizioni. se la condizione pari a 3 restituisce Unacceptable absent .

questa è la mia condizione con due valori:

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

come posso cambiare la condizione?


Come quello:

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

Spero di aiutarti.


L'approccio migliore è quello di sbarazzarsi di if else conditions il più possibile e questo è il modo in cui lo fai:

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");
        }
    }
}

e per usarlo non avrai più bisogno di altri se non tramite la tua app, basta eseguire questo metodo nel punto in cui la tua applicazione è stata avviata e quindi ottenere il tuo valore fornendo la chiave a questo dizionario come:

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

C violino


Puoi usare qualcosa come questo:

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

Ma questo stile di codice non è leggibile. Meglio usare il dizionario o l'istruzione switch / case ecc.


Raccomando qualcosa di più leggibile all'approccio di @Shubhams come questo:

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");
}

Usa un dizionario di ricerca.

//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];

potresti aggiungere uno stato di sicurezza come "NA" e farlo come segue:

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

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

Puoi nidificare gli operatori, in questo modo crei un grande albero if che è, a mio parere, leggibile. Un interruttore sarebbe più leggibile.





asp.net