में अपेक्षित आउटपुट का उत्पादन न करने योग्य नलटेबल लॉन्ग स्विच स्टेटमेंट वीएस2015 अपडेट 1 में एक नामुमकिन लंबे स्विच स्टेटमेंट का उपयोग करते समय मुझे कुछ अजीब व्यवहार दिखाई दे रहा है, जिसे मैं अन्य विजुअल स्टूडियो रिलीज़ में नहीं देख रहा हूं, जहां यह अपेक्षित है।वीएस2015
Input = -1, Switch 1 output = d, Switch 2 output = d, If Else = d
Input = 0, Switch 1 output = 0, Switch 2 output = d, If Else = 0
Input = 1, Switch 1 output = d, Switch 2 output = d, If Else = 1
Input = 2, Switch 1 output = d, Switch 2 output = d, If Else = d
Input = , Switch 1 output = d, Switch 2 output = d, If Else = d
मैं केवल Nullable प्रकार के साथ इस व्यवहार को देख कर रहा हूँ:
class Program
{
static void Main(string[] args)
{
NullableTest(-1);
NullableTest(0);
NullableTest(1);
NullableTest(2);
NullableTest(null);
}
public static void NullableTest(long? input)
{
string switch1;
switch (input)
{
case 0:
switch1 = "0";
break;
case 1:
switch1 = "1";
break;
default:
switch1 = "d";
break;
}
string switch2;
switch (input)
{
case -1:
switch2 = "-1";
break;
case 0:
switch2 = "0";
break;
case 1:
switch2 = "1";
break;
default:
switch2 = "d";
break;
}
string ifElse;
if (input == 0)
{
ifElse = "0";
}
else if (input == 1)
{
ifElse = "1";
}
else
{
ifElse = "d";
}
Console.WriteLine("Input = {0}, Switch 1 output = {1}, Switch 2 output = {2}, If Else = {3}", input, switch1, switch2, ifElse);
}
यह नमूना कोड निम्न निर्गम (पठनीयता के लिए संरेखित) पैदा करता है। गैर-शून्य प्रकारों की उम्मीद के अनुसार काम करते हैं।
ध्यान दें कि यह नहीं समान व्यवहार this question में है, और this संकलक बग कि VS2015 अद्यतन 1 में निर्धारित किया गया है मुझे लगता है कि उन लोगों के उदाहरणों में से दोनों को सही ढंग से चलाने की पुष्टि कर लें की वजह से नहीं है।