Gli*_*kot 15 c# vb.net language-features language-design
我在这里读了一篇有趣的文章,它对vb.net中的'case'语句与C#中的'switch'语句提出了一个有趣的观点,我在下面粘贴了它:
以下Visual Basic Select Case语句无法使用单个switch语句在C#中表示:
Dim Condition As Integer = 55
Select Case Condition
Case 1, 3 To 5, 10, 12, 14, Is > 50
'value 55 executes code here
Case Else
'values <1, 2, 6-9, 11, 13, 15-49
End Select
Run Code Online (Sandbox Code Playgroud)
我总是在C#中找到switch语句,在每种情况下都有一个中断和后续要求,有点笨拙.有没有理由他们没有增强switch命令来允许这些情况?什么时候会有用呢?任何人都知道构造的任何扩展,以允许更多的灵活性?
干杯
Guf*_*ffa 19
在C#中,您只能在案例中使用不同的值.这使得它更有限,但另一方面它使它更快,因为它可以使用哈希查找来实现.
切换语法在C#中比在C/C++中受到更多限制.你仍然可以做同样的事情,但是没有暗中进行,你必须写一个特定的跳转到下一个案例.这种限制的原因在于,通过错误而非故意堕落更为常见.
在C#中,您需要在默认情况下使用if语句来处理范围:
int condition = 55;
switch (condition) {
case 1:
case 3:
case 4:
case 5:
case 10:
case 12:
case 14:
// values 1, 3-5, 10, 12, 14
break;
default:
if (condition > 50) {
// value 55 executes code here
} else {
// values <1, 2, 6-9, 11, 13, 15-49
}
break;
}
Run Code Online (Sandbox Code Playgroud)
我记得曾经告诉过我们的一位大学讲师,他曾经发现的唯一有用的东西就是写下圣诞节十二天的歌词.
沿着这些方向的东西
for (int i = 1; i <= 5; i++) {
Console.WriteLine("On the " + i + " day of christmast my true love gave to me");
switch (i) {
case 5:
Console.WriteLine("5 Gold Rings");
goto case 4;
case 4:
Console.WriteLine("4 Colly Birds");
goto case 3;
case 3:
Console.WriteLine("3 French Hens");
goto case 2;
case 2:
Console.WriteLine("2 Turtle Doves");
goto case 1;
case 1:
Console.WriteLine("And a Partridge in a Pear Tree");
break;
}
Console.WriteLine("-");
}
10年后,我倾向于同意他的观点.在我们做java的时候,它不得不为C#伪造它.
| 归档时间: |
|
| 查看次数: |
10840 次 |
| 最近记录: |