文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【菜鸟】学if...else...

【菜鸟】学if...else...

时间:2010-09-28  来源:K#

在代码中,经常会见到if...else...语句。它基于一个取不同的值(true/false)的bool,来执行不同的行为。特定的语句总是伴随着特定的数据类型。用到条件语句的地方,常常有bool,反之亦然。

bool是个极其简单的类型,它的值非true即fasle。正因为bool太简单了,懵懵懂懂、一知半解地就用起来了,用到最后可以说是,一塌糊涂、乱七八糟。

我觉得,有必要对它们进行初步地分析及归类。

 

先从bool说起

你可以定义一个bool变量:

bool flag = true;

 

也可以通过比较运算符生成一个bool变量:

bool flag = (country == "China");

 

bool不关可以用在代码块中,它还有更广泛的用途。

有些函数的参数中含有bool:

int Compare(string strA, string strB, bool ignoreCase)

 

有些函数返回bool:

bool StartsWith(string value)

 

有些类中含有bool型成员:

public struct Nullable<T> where T: struct

{

    private bool hasValue;

}

 

接着,就可以围绕这个bool写if...else...语句了:

if(flag)

    ...

else

    ...

所以,我得出一个结论:if...else...与bool是形影相随的!

 

我试图对if...else...语句的用法进行分类:

1.处理特殊情况:

在常规情况下,会有一些特殊情况。特殊情况不经常发生,但是的确有可能发生。

比如说:异常

bool ok = ReadFile();

if(!ok)PrintMsg("Cannot read file!");

 

使用守卫语句,可以提前返回函数:

void Heat()

{

   if(temperature>100)return;

    temperature += 10;

}

注:由于特殊情况是附加的,所以常常没有else分支。

 

2.处理不同类型:

当对一个对象集合进行操作时,常常针对不同的类型的对象,要使用不同的处理方式。

比如说:发工资

void PayEveryone(Employee[] emps)

{

    foreach(emp in emps)

    {

       if(emp.Type == "高") emp.Pay(3000);

       else if(emp.Type == "中") emp.Pay(2000);

        else emp.Pay(1000);

    }

}

 

随着时间、数量的变化的积累,导致状态的改变,即量变引起质变。

比如说:吃饭

void Eat()

{

   if(IsMorning())PrintMsg("吃早饭");

   else if(IsNoon())PrintMsg("吃午饭");

   else if(IsAfternoon())PrintMsg("吃晚饭");

   else PrintMsg("吃饭");

}

注:条件语句的各个分支具有等同的粒度。

 

3.作为控制条件:

在循环语句或者递归函数中,通常用一个bool来控制代码的运行。

比如说:求最大公约数

    int GCD(int a, int b)

    {

        int Remainder;

        while(true)

        {

            if(b == 0)break;

            Remainder = a % b;

            a = b;

            b = Remainder;

        }

        return a;

    }

在冒泡排序中,如果在一次循环中,没有发生任何改变,则可以提前终止。

 

扩展阅读:

《代码大全》第十五章

《重构》第九章

 

注:由于本人很菜,堪称菜鸟,如有不妥的地方,请指出,多谢。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载