|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可怜的程序员,还是逃不出移植的命运!疾速进门|语句 假如想依据一个布尔表达式的了局选择实行两个分歧的代码块,就能够利用if语句。
了解if语句的语法
if语句的语法格局以下(if和else是关头字):
if(booleanExpression)
statement-1;
else
statement-2;
假如booleanExpression求值为true,就运转statement-1;不然就运转statement-2。else关头字和后续的statement-2是无关紧要的。假如没有else子句,那末在booleanExpression为false的条件下,甚么都不会产生。
比方,以下if语句用于递增一个秒表的秒针(临时疏忽分钟)。假如seconds的值是59,就重置为0;不然就利用操纵符++来递增:
intseconds;
...
if(seconds==59)
seconds=0;
else
seconds++;
只利用布尔表达式!
if语句中的表达式必需放在一对圆括号中。除此以外,表达式必需是布尔表达式。在另外一些言语中(特别是C和C++),还可使用一个整数表达式,编译器能主动将整数值转换成true(非零值)或false(零值)。C#不同意如许做。假如写如许的一个表达式,编译器会报错。
假设在if语句中失慎写了一个赋值表达式,而不是实行一个相称性测试,C#编译器也能辨认你的毛病。比方:
intseconds;
...
if(seconds=59)//编译时毛病
...
if(seconds==59)//准确
失慎而写成赋值表达式,是C和C++程序简单呈现bug的另外一个缘故原由。在C和C++中,会将所赋的值(59)悄然地转换成一个布尔值(任何非零的值城市被视为true),形成每次都一定实行if语句以后的代码。
最初,能够将一个布尔变量作为表达式利用,以下例所示:
boolinWord;
...
if(inWord==true)//能够,但不经常使用
...
if(inWord)//更好
利用块来分组语句
偶然,必要在一个布尔表达式为true的条件下运转两个大概更多的语句。能够将要运转的语句分组到一个新办法中,然后挪用谁人办法。可是,一个更复杂的做法是将语句分组到一个块(block)中。块是指用一对年夜括号来关闭的一系列语句。鄙人例中,两个语句将seconds变量重置为零,并使minutes变量递增。我们用一个块来分组这两个语句。假设seconds的值即是59,就实行该块:
intseconds=0;
intminutes=0;
...
if(seconds==59)
{
seconds=0;
minutes++;
}
else
seconds++;
主要提醒假设漏掉年夜括号,将形成两个严峻成果。起首,C#编译器只将第一个语句(seconds=0)与if语句联系关系起来,下一个语句(minutes++)将不再成为if语句的一部分。其次,当编译器碰到else关头字时,不会将它与前一个if语句联系关系起来,以是会呈报语法毛病。
<P> 嵌套if语句
能够在一个if语句中嵌套其他if语句。如许一来,就能够将一系列布尔表达式链接起来,它们将顺次测试,直到个中一个求值为true。鄙人例中,假设day值为0,则第一个测试求值为true,值"Sunday"将赋给dayName变量。假设day值不为0,则第一个测试失利,把持将传送给else子句。该子句将运转第二个if语句,将day的值与1举行对照。注重,只要在第一个if测试为false的条件下,才会实行第二个if。相似地,只要在第一个和第二个if测试为false的条件下,才会实行第三个if。
if(day==0)
dayName="Sunday";
elseif(day==1)
dayName="Monday";
elseif(day==2)
dayName="Tuesday";
elseif(day==3)
dayName="Wednesday";
elseif(day==4)
dayName="Thursday";
elseif(day==5)
dayName="Friday";
elseif(day==6)
dayName="Saturday";
else
dayName="unknown";
鄙人面的实习中,我们将写一个办法,以便利用嵌套的if语句来对照两个日期。
1、编写if语句
1.启动MicrosoftVisualStudio2005。
2.翻开Selection项目,它位于MyDocuments文件夹下的MicrosoftPressVisualCSharpStepbyStepChapter4Selection子文件夹中。
3.选择“调试”|“入手下手实行(不调试)”。
VisualStudio2005将天生并运转使用程序。窗体上显现了两个DateTimePicker控件,分离名为first和second(这类控件将显现一个日历,便于用户经由过程单击下拉按钮来选择一个日期)。两个控件以后都设置成明天的日期。
4.单击Compare按钮。
文本框中会显现以下内容:
first==second:False
first!=second:True
first<second:False
first<=second:False
first>second:True
first>=second:True
上述了局分明有成绩!如所示布尔表达式first==second应当为true,由于first和second都被设置成明天的日期。现实上,在上述了局中,仿佛只要操纵符<和操纵符>=的了局才是准确的!
文本框内的内容
5.单击Quit。
随后将前往VisualStudio2005编程情况。
6.在“代码和文本编纂器”窗口中显现Form1.cs的代码,找到compare_Click办法,以下所示:
privateintcompare_Click(objectsender,System.EventArgse)
{
intdiff=dateCompare(first.Value,second.Value);
info.Text="";
show("first==second",diff==0);
show("first!=second",diff!=0);
show("first<second",diff<0);
show("first<=second",diff<=0);
show("first>second",diff>0);
show("first>=second",diff>=0);
}
单击窗体上的Compare按钮,就会实行这个办法。该办法猎取窗体上的first和second这两个DateTimePicker控件中显现的日期值,并挪用另外一个名为dateCompare的办法来对照它们。我们将鄙人一个步骤中详细会商dateCompare办法,这里只是复杂地说一下。该办法的感化是对照它的两个参数值,并依据对照了局来前往一个整数值。假如两个值不异,就前往零;假如first的值小于second的值,就前往-1;假如first的值年夜于second的值,就前往+1(假设一个日期在日历上排在另外一个日期的前面,就说前者年夜于后者)。
show办法用于在窗体上的info文本框控件中显现对照了局。
7.找到dateCompare办法,以下所示:
privateintdateCompare(DateTimeleftHandSide,DateTimerightHandSide)
{
//TODO
return42;
}
该办法今朝在挪用后一直前往统一个值,而不是经由过程对照参数值来前往0,-1或+1。这注释了为何使用程序不像我们希冀的那样事情!如今,必要完成这个办法,让它准确地对照两个日期。
8.从dateCompare办法中移除//TODO正文和return语句。
9.在dateCompare办法主体中输出以下语句:
intresult;
if(leftHandSide.Year<rightHandSide.Year)
result=-1;
elseif(leftHandSide.Year>rightHandSide.Year)
result=+1;
elseif(leftHandSide.Month<rightHandSide.Month)
result=-1;
elseif(leftHandSide.Month>rightHandSide.Month)
result=+1;
elseif(leftHandSide.Day<rightHandSide.Day)
result=-1;
elseif(leftHandSide.Day>rightHandSide.Day)
result=+1;
else
result=0;
returnresult;
假设leftHandSide.Year<rightHandSide.Year和leftHandSide.Year>rightHandSide.Year为false,那末leftHandSide.Year==rightHandSide.Year一定为true,程序流程将准确转移,入手下手对照lhs和rhs的Month属性。相似地,假设leftHandSide.Month<rightHandSide.Month和leftHandSide.Month>rightHandSide.Month为false,那末leftHandSide.Month==rightHandSide.Month一定为true,程序将入手下手对照lhs和rhs的Day属性。最初,假设leftHandSide.Day<rightHandSide.Day和leftHandSide.Day>rightHandSide.Day为false,那末leftHandSide.Day==rightHandSide.Day一定为true;别的,因为在这时候候,Month和Year属性也一定为true,以是两个日期一定是不异的。
10.选择“调试”|“入手下手实行(不调试)”。
使用程序将从头天生偏重新启动。一样地,两个DateTimePicker控件(first和second)将设置成明天的日期。
11.单击Compare按钮。
文本框中会显现以下内容:
first==second:True
first!=second:False
first<second:False
first<=second:True
first>second:False
first>=second:True
这个了局才是准确的。
12.将second这个DateTimePicker控件的日期调到今天。
13.再次单击Compare按钮。
文本框中会显现以下内容:
first==second:False
first!=second:True
first<second:True
first<=second:True
first>second:False
first>=second:False
一样地,这些了局是准确的。
14.单击Quit。是不是实质都是API?有的好像不只是API那么简单的,有的也是一种框架就像MFC一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^) |
|