c# - मैं यह शर्त कैसे बदल सकता हूँ कि मैं चाहता हूँ




asp.net (7)

मेरी दो शर्त है। यदि स्थिति 0 बराबर है तो यह Absent और यदि 1 बराबर है तो यह present । अब मैं अपनी स्थिति में तीसरा मूल्य जोड़ना चाहता हूं। यदि यह 3 बराबर है तो यह Unacceptable absent

यह दो मान वाली मेरी शर्तें हैं:

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

मैं स्थिति कैसे बदल सकता हूं?

https://code.i-harness.com


आप "NA" के रूप में एक विफल स्थिति जोड़ सकते हैं और इसे निम्नानुसार कर सकते हैं:

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

आप इस तरह से कुछ का उपयोग कर सकते हैं:

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

लेकिन इस कोड शैली अच्छा पठनीय नहीं है। शब्दकोश या स्विच / केस स्टेटमेंट आदि का उपयोग करने के लिए बेहतर है।


नेस्टेड टर्नरी ऑपरेटरों का उपयोग संक्षिप्तता के लिए पठनीयता का त्याग करता है। मैं इसके बजाय विनम्र 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}?");
    }
}

मैं इस तरह @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");
}

लुकअप शब्दकोश का उपयोग करें।

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

सबसे अच्छा तरीका यह है कि यदि आप जितना कर सकते हैं उतनी शर्तों से छुटकारा पाएं और आप ऐसा करते हैं:

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

सी # फिडल


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

आप संचालकों को घोंसला बना सकते हैं, इस तरह से आप एक बड़ा अगर और पेड़ बनाते हैं, तो मेरी राय में, पठनीय की तरह। एक स्विच अधिक पठनीय होगा।







asp.net