`
isiqi
  • 浏览: 16074991 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

.net 基础知识大杂烩(2) ——条件语句

阅读更多
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(
"男人");
}
elseif(sex==0)
{
Console.WriteLine(
"女人");
}
因为我们心想 sex 变量不可能出现别的值。
不过一旦写了这样的代码,不久之后就一定会后悔的,因为就像温伯格所说的,“所有不可能发生的事情都一定会发生”,所以正确的写法应该是:
if(sex==1)
{
Console.WriteLine(
"男人");
}
elseif(sex==0)
{
Console.WriteLine(
"女人");
}
else
{
System.Diagnostics.Debug.Assert(
false,"Shouldneverreachhere!");
}
或者这样写也不错:
System.Diagnostics.Debug.Assert((sex==1||sex==0),"wrongsex");
if(sex==1)
{
Console.WriteLine(
"男人");
}
else
{
Console.WriteLine(
"女人");
}
总之只要你写if或switch语句,就要确保它覆盖了变量的所有取值范围。

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

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

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

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


是不是感觉一下子清新了好多?而且更重要的是,第二段代码把对正常情况的处理和非正常情况下的处理明显地分成了两部分,使读者更容易集中精力。

http://www.cnblogs.com/1-2-3/archive/2008/01/30/net-basic-knowledge-2-cs-vb-condition-statement.html

分享到:
评论

相关推荐

    亮剑.NET深入体验与实战精要2

    第3章 ASP.NET开发大杂烩 113 3.1 页面生命周期 114 3.1.1 独立页面生命周期事件顺序 114 3.1.2 具有Master页的生命周期事件顺序 116 3.1.3 ASP.NET生命周期详解 118 3.2 页面状态管理 120 3.2.1 Cookie 121 3.2.2...

    亮剑.NET深入体验与实战精要.part2

     第3章 asp.net开发大杂烩  3.1 页面生命周期  3.2 页面状态管理  ……  第4章 windows窗体编程你也行  第5章 数据库开发  第6章 关于xml  第7章 web service开发详解  第8章 用户体验的杀手锏——...

    GenomeDotNet:.NET项目的大杂烩,可用于处理23andme数据

    .NET项目的大杂烩,可用于处理23andme数据 ISOGG 2015 Y-DNA单倍体树 在互联网上寻找易于解析的ISOGG 2015 Y-DNA Haplogroup树的版本,我倒霉了。 因此,我决定刮除ISOGG的页面并将数据投影到易于使用的JSON文件中。...

    基础传统神经网络算法大杂烩.zip

    基础传统神经网络算法大杂烩基础传统神经网络算法大杂烩 基础传统神经网络算法大杂烩基础传统神经网络算法大杂烩 基础传统神经网络算法大杂烩基础传统神经网络算法大杂烩 基础传统神经网络算法大杂烩基础传统神经...

    亮剑.NET深入体验与实战精要3

    第3章 ASP.NET开发大杂烩 113 3.1 页面生命周期 114 3.1.1 独立页面生命周期事件顺序 114 3.1.2 具有Master页的生命周期事件顺序 116 3.1.3 ASP.NET生命周期详解 118 3.2 页面状态管理 120 3.2.1 Cookie 121 3.2.2...

    亮剑.NET:.NET深入体验与实战精要清晰版及源码

     第3章 asp.net开发大杂烩  3.1 页面生命周期  3.2 页面状态管理  ……  第4章 windows窗体编程你也行  第5章 数据库开发  第6章 关于xml  第7章 web service开发详解  第8章 用户体验的杀手锏——...

    C++基础入门教程(一):基础知识大杂烩

    主要介绍了C++基础入门教程(一):基础知识大杂烩,本文讲解了注释、头文件、命名空间等内容,需要的朋友可以参考下

    亮剑.NET深入体验与实战精要.part3

     第3章 asp.net开发大杂烩  3.1 页面生命周期  3.2 页面状态管理  ……  第4章 windows窗体编程你也行  第5章 数据库开发  第6章 关于xml  第7章 web service开发详解  第8章 用户体验的杀手锏——...

    亮剑.NET深入体验与实战精要.part4(完)

     第3章 asp.net开发大杂烩  3.1 页面生命周期  3.2 页面状态管理  ……  第4章 windows窗体编程你也行  第5章 数据库开发  第6章 关于xml  第7章 web service开发详解  第8章 用户体验的杀手锏——...

    各种工具大杂烩

    各种工具大杂烩

    数据库连接语句大杂烩

    包括了可能用到的多种数据库的连接语句。很实用!值得下载。

    亮剑.NET深入体验与实战精要.part1.

     第3章 asp.net开发大杂烩  3.1 页面生命周期  3.2 页面状态管理  ……  第4章 windows窗体编程你也行  第5章 数据库开发  第6章 关于xml  第7章 web service开发详解  第8章 用户体验的杀手锏——...

    新能源汽车知识点大杂烩.pdf

    新能源汽车知识点大杂烩.pdf新能源汽车知识点大杂烩.pdf

    专业方面的资源 网址大杂烩

    软件工具的安装,java、.net、其他学习资料方面的知识等等,只要是你能想到的我这里面都是存在的!

    Elasticsearch的大杂烩分享_赖鸿智.pdf

    Elasticsearch的大杂烩分享_赖鸿智.pdf

    数通必会知识点大杂烩.doc

    数通必会知识点大杂烩.doc

    (大杂烩)proteus仿真MCS51一百例.rar

    (大杂烩)proteus仿真MCS51一百例.rar(大杂烩)proteus仿真MCS51一百例.rar(大杂烩)proteus仿真MCS51一百例.rar(大杂烩)proteus仿真MCS51一百例.rar(大杂烩)proteus仿真MCS51一百例.rar(大杂烩)proteus仿真MCS51一百例...

    网络安全大杂烩

    罗列了一些网络安全方面的知识,简单介绍了安全测试的知识。

    matlab源码合集大杂烩资源总共大小2G

    matlab源码合集大杂烩资源总共大小2G本资源系百度网盘分享地址

Global site tag (gtag.js) - Google Analytics