.net 基础知识 ——条件语句

 

If 语句

C# VB
int i = 3;
if (i < 5)
{
    Console.WriteLine("i 小于 5");
}
Dim i As Integer = 3
If i < 5 Then
    Console.WriteLine("i 小于 5")
End If
int i = 9;
if (!(i < 5))
{
    Console.WriteLine("i 大于等于 5");
}
Dim i As Integer = 9
If Not i < 5 Then
    Console.WriteLine("i 大于等于 5")
End If
int i = 3;
if (i < 5)
{
    Console.WriteLine("i 小于 5");
}
else
{
    Console.WriteLine("i 大于等于 5");
}
Dim i As Integer = 3
If i < 5 Then
    Console.WriteLine("i 小于 5")
Else
    Console.WriteLine("i 大于等于 5")
End If
int i = 3;
if (i < 5)
{
    Console.WriteLine("i 小于 5");
}
else if (i == 5)
{
    Console.WriteLine("i 等于 5");
}
else
{
    Console.WriteLine("i 大于 5");
}
Dim i As Integer = 3
If i < 5 Then
    Console.WriteLine("i 小于 5")
ElseIf i = 5 Then
    Console.WriteLine("i 等于 5")
Else
    Console.WriteLine("i 大于 5");
End If

switch 语句

C# VB
int i = 9;
switch (i)
{
    case 3:
        Console.WriteLine("i = 3");
        break;
    case 5:
        Console.WriteLine("i = 5");
        break;
    case 9:
        Console.WriteLine("i = 9");
        break;
    default:
        Console.WriteLine("other");
        break;
}
Dim i As Integer = 9
Select Case i
    Case 3
        Console.WriteLine("i = 3")
    Case 5
        Console.WriteLine("i = 5")
    Case 9
        Console.WriteLine("i = 9")
    Case Else
        Console.WriteLine("other")
End Select
int i = 5;
switch (i)
{
    case 3:
    case 5:
    case 9:
        Console.WriteLine("i = 3 or 5 or 9");
        break;
    default:
        Console.WriteLine("other");
        break;
}
Dim i As Integer = 5
Select Case i
    Case 3, 5, 9
        Console.WriteLine("i = 3 or 5 or 9")
    Case Else
        Console.WriteLine("other")
End Select
不支持 Dim i As Integer = 9
Select Case i
    Case 5 To 9
        Console.WriteLine("i = 5 to 9")
End Select
enum Tricolor { Red, Green, Blue }
// ...
Tricolor color = Tricolor.Blue;
switch (color)
{
    case Tricolor.Blue:
        Console.WriteLine("Blue");
        break;
    case Tricolor.Green:
        Console.WriteLine("Green");
        break;
    default:
        Console.WriteLine("other color");
        break;
}
Enum Tricolor
    Red
    Green
    Blue
End Enum
' ...
Dim color As Tricolor = Tricolor.Blue
Select Case color
    Case Tricolor.Blue
        Console.WriteLine("Blue")
    Case Tricolor.Green
        Console.WriteLine("Green")
    Case Else
        Console.WriteLine("other color")
End Select

技巧

1. Imposible Is Nothing

记得我在调试程序的时候说得最多的一句话就是“不可能啊……”。因为我们在编程的时候总是要假设很多条件的。我们会假设天不会塔下来、出门不会被车撞到、吃饭不会被噎死,否则就没法生活下去了。例如我们会这样写程序:
if (sex == 1)
{
    Console.WriteLine(
"男人");
}
else if (sex == 0)
{
    Console.WriteLine(
"女人");
}
因为我们心想 sex 变量不可能出现别的值。
不过一旦写了这样的代码,不久之后就一定会后悔的,因为就像温伯格所说的,“所有不可能发生的事情都一定会发生”,所以正确的写法应该是:
if (sex == 1)
{
    Console.WriteLine(
"男人");
}
else if (sex == 0)
{
    Console.WriteLine(
"女人");
}
else
{
    System.Diagnostics.Debug.Assert(
false"Should never reach here!");
}
或者这样写也不错:
System.Diagnostics.Debug.Assert((sex == 1 || sex == 0), "wrong sex");
if (sex == 1)
{
    Console.WriteLine(
"男人");
}
else
{
    Console.WriteLine(
"女人");
}
总之只要你写if或switch语句,就要确保它覆盖了变量的所有取值范围。

2.  避免多层嵌套的if语句

相信大家都受过一层套着一层又套着一层的代码的折磨,特别是正巧每层代码又很长的时候,那感觉就像在热带雨林里迷了路,转过好几圈却不知道自己身在何处。比较下面两段功能相同的代码。
可读性不好的代码:
public string foo(int age)
{
    
if (age >= 0 && age <= 150)
    {
        
if (age >= 0 && age <= 18)
        {
            
return "青少年";
        }
        
else if (age > 18 && age <= 60)
        {
            
return "中年";
        }
        
else
        {
            
return "老年";
        }
    }
    
else
    {
        
return "无效的年龄";
    }
}

可读性好的代码:
public string foo(int age)
{
    
if (age<0 || age > 150)
    {
        
return "无效的年龄";
    }

    
if (age >= 0 && age <= 18)
    {
        
return "青少年";
    }
    
else if (age > 18 && age <= 60)
    {
        
return "中年";
    }
    
else
    {
        
return "老年";
    }
}

是不是感觉一下子清新了好多?而且更重要的是,第二段代码把对正常情况的处理和非正常情况下的处理明显地分成了两部分,使读者更容易集中精力。
原文地址:https://www.cnblogs.com/smallmuda/p/1356819.html