سؤال

هل من الممكن أن يكون التبديل في C# الذي يتحقق إذا كانت القيمة فارغة أو فارغة لا "" ولكن String.Empty?وأنا أعلم أنني يمكن أن تفعل هذا:

switch (text)
{
    case null:
    case "":
        break;
}

هل هناك شيء أفضل لأنني لا أريد أن يكون لديك قائمة كبيرة من إن التصريحات ؟

أنا'mm يحاول أن يحل محل:

if (String.IsNullOrEmpty(text))
    blah;
else if (text = "hi")
    blah
هل كانت مفيدة؟

المحلول

وأود أن أقترح شيء كما يلي:

switch(text ?? String.Empty)
{
    case "":
        break;
    case "hi":
        break;
}

هل هذا ما كنت تبحث عنه؟

نصائح أخرى

ما هو الخطأ في المثال بيان switch الخاصة بك؟

switch (text)
{
    case null:
    case "":
        foo();
        break;
    case "hi":
        bar();
        break;
}

وكان يعمل (ولسبب ما فاجأني - اعتقدت انها ستتقدم بشكوى أو تعطل في حالة null) ومن الواضح

.

لهذه المسألة، لماذا أنت قلق على String.Empty؟ أنا في عداد المفقودين شيء هنا.

وماذا عن

if (string.isNullOrEmpty(text))
{
   //blah
}
else
{
 switch (text)
 {
     case "hi":
 }

و}

الوثائق من String.Empty:

<اقتباس فقرة>   

وقيمة هذا الحقل هي   سلسلة ذات طول صفري، "".

وأفسر هذا يعني أنه لا يوجد فرق بين "" وString.Empty. لماذا تحاول أن نميز بينهما؟

وسلسلة فارغة هي ""، والتي تساوي String.Empty. والسبب أن ل<م> يمكن وضع "" في بيان الحالة ولكن ليس "String.Empty" هو أن "فارغ" هو حقل من فئة "سلسلة" و "" هو في الواقع قيمة CONTANT.

ويسمح القيم الثابتة في الحالات String.Empty هو حقل ويمكن تغييرها في وقت التشغيل. (في هذه الحالة ستبقى كما هي، ولكن ليس جميع المجالات ثابتة من كل فئة هي قيم ثابتة).

في حالة "إذا"، يتم تقييم هذا الشرط في وقت التشغيل، وإذا لا <م> لا تتطلب قيمة ثابتة.

وآمل أن يكون هذا ما يفسر لماذا.

شيء أنا فقط لاحظت أنه يمكنك الجمع إذا/آخر وتبديل البيانات! مفيدة جدا عند الحاجة إلى تحقق شروط مسبقة.

if (string.IsNullOrEmpty(text))
{
    //blah
}
else switch (text)
{
    case "hi":
        Console.WriteLine("How about a nice game of chess?");
        break;
    default:
        break;
}
string StrMode;
if (!string.IsNullOrEmpty(StrMode))
{  
    switch (StrMode.Trim())
    {
        case "Souse":
        {
             //Statement Eg:  
             MesssageBox.Show("Souse");
             break;
        }

        case "Company Agent":
        {
             //Statement Eg:
             MesssageBox.Show("Souse");
             break; 
        }

        default:
             return;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top