सी # स्विच स्टेटमेंट का डिफॉल्ट लेबल कैसे एक नामुमकिन enum संभाल सकता है?सी # स्विच स्टेटमेंट का डिफॉल्ट लेबल कैसे एक नामुमकिन enum संभाल सकता है?
क्या डिफॉल्ट लेबल नल और किसी भी अनचाहे मामलों को पकड़ लेगा?
सी # स्विच स्टेटमेंट का डिफॉल्ट लेबल कैसे एक नामुमकिन enum संभाल सकता है?सी # स्विच स्टेटमेंट का डिफॉल्ट लेबल कैसे एक नामुमकिन enum संभाल सकता है?
क्या डिफॉल्ट लेबल नल और किसी भी अनचाहे मामलों को पकड़ लेगा?
यदि यह शून्य है, तो यह डिफ़ॉल्ट लेबल हिट करेगा।
public enum YesNo
{
Yes,
No,
}
public class Program
{
public static void Main(string[] args)
{
YesNo? value = null;
switch (value)
{
case YesNo.Yes:
Console.WriteLine("Yes");
break;
case YesNo.No:
Console.WriteLine("No");
break;
default:
Console.WriteLine("default");
break;
}
}
}
कार्यक्रम default
प्रिंट करेगा।
जब तक शून्य को संभाला नहीं जाता है।
public class Program
{
public static void Main(string[] args)
{
YesNo? value = null;
switch (value)
{
case YesNo.Yes:
Console.WriteLine("Yes");
break;
case YesNo.No:
Console.WriteLine("No");
break;
case null:
Console.WriteLine("NULL");
break;
default:
Console.WriteLine("default");
break;
}
}
}
प्रिंट NULL
।
आप एक बिना क्रिया enum मान जो बाद में जोड़ा गया है है:
public enum YesNo
{
Yes,
No,
FileNotFound,
}
public class Program
{
public static void Main(string[] args)
{
YesNo? value = YesNo.FileNotFound;
switch (value)
{
case YesNo.Yes:
Console.WriteLine("Yes");
break;
case YesNo.No:
Console.WriteLine("No");
break;
default:
Console.WriteLine("default");
break;
}
}
}
यह अभी भी प्रिंट default
।
यह कारण है कि मुझे जावा से अधिक # सी पसंद है। –
आप default
की तुलना में एक विशेष मामले के लेबल दूसरे के मार्ग null
स्विच मूल्यों के लिए अशक्त-कोलेसिंग ऑपरेटर ??
उपयोग कर सकते हैं:
public static IEnumerable<String> AsStrings(this IEnumerable<Char[]> src)
{
Char[] rgch;
var e = src.GetEnumerator();
while (e.MoveNext())
{
switch ((rgch = e.Current)?.Length ?? -1)
{
case -1: // <-- value when e.Current is 'null'
yield return null;
break;
case 0:
yield return String.Empty;
break;
case 1:
yield return String.Intern(new String(rgch[0], 1));
break;
default: // 2...n
yield return new String(rgch);
break;
}
}
}
इसे यहाँ का प्रयास करें: http://ideone.com/ – CloudyMarble
सी # भाषा विशिष्टता, 8.7.2 "स्विच स्टेटमेंट"। http://msdn.microsoft.com/en-us/library/ms228593.aspx – Dennis