您的位置:首页 > 编程语言 > C#

《C#入门经典》学习笔记(流程控制)

2007-06-06 13:44 225 查看
流程控制

程序流程就是C#代码行的执行顺序
两种方法控制流程:
1 分支:有条件地执行代码
2 循环:重复执行相同的语句



布尔逻辑

bool类型有两个值:true或false

比较运算符(关系运算符)
运算符 类别 范例
== 二元 var1=var2==var3;
!= 二元 var1=var2!=var3;
< 二元 var1=var2<var3;
> 二元 var1=var2>var3;
<= 二元 var1=var2<=var3;
>= 二元 var1=var2>=var3;

注:var1是bool变量,var2和var3可以是各种类型

布尔运算符
用于布尔值
运算符 类别 范例 说明
! 一元 var1=!var2; 逻辑非
^ 二元 var1=var2^var3; 逻辑异或(有且仅有一个是true)
& 二元 var1=var2&var3; 逻辑与
| 二元 var1=var2|var3; 逻辑或
&& 二元 var1=var2&&var3; 逻辑与
|| 二元 var1=var2||var3; 逻辑或

注:"&&"和"||"的效率比"&"和"|"高,因为前者当第一个操作数就确定结果的话就不再考虑第二个操作数,而后者总是要计算

位运算符

位运算符实际上处理的是储存在变量中的一系列位,而不是变量的值

&运算符
操作数1的位 操作数2的位 &结果的位
1 1 1
1 0 0
0 1 0
0 0 0

|运算符
操作数1的位 操作数2的位 |结果的位
1 1 1
1 0 1
0 1 1
0 0 0

^运算符
操作数1 操作数2 ^结果的位
1 1 0
1 0 1
0 1 1
0 0 0

~运算符(一元运算符,取反)
操作数的位 ~结果的位
1 0
0 1

<<和>>位移运算符
运算符 类别 范例 说明
>> 二元 var1=var2>>var3; var1等于var2二进制值右移var3位的值
<< 二元 var1=var2<<var3; var1等于var2二进制值左移var3位的值

布尔赋值运算符

运算符 类别 范例 说明
&= 二元 var1&=var2; var1等于var2&var3
|= 二元 var1|=var2; var1等于var2|var3
^= 二元 var1^=var2; var1等于var2^var3
>>= 一元 var1>>=var2; var1等于var1二进制值右移var2位的值
<<= 一元 var1<<=var2; var1等于var1二进制值左移var2位的值

运算符的优先级

优先级由高到低
++ -- (前缀) + - (一元) () ! ~
* / %
+ -
<< >>
< > <= >=
== !=
&
^
|
&&
||
= += -= *= /= %= <<= >>= &= ^= |=
++ -- (后缀)

goto语句

c#允许给代码行加上标签,可以使用goto语句跳转到标签(建议不使用)
优点:方式简单
缺点:过多地使用将使代码很难读懂
例如:
int myInteger = 17;
goto myLabel;
myInteger++;
myLabel://标签
Console.WriteLine("{0}", myInteger);
将跳过myInteger++;直接显示17



分支

分支是控制下一步要执行哪些代码的过程
分支技术:三元运算符、if语句、switch语句

三元运算符

语法:
<test> ? <resultIfTrue> : <resultIfFalse>
计算<test>后应该得到一个布尔值,再根据这个值来确定结果
例如:
string sResult = (myInt<10) ? "less then 10" : "greater then or equal to 10";

if 语句

语法:
if(<test>)
<code executed if <test> is true>
else
<code executed if <test> is false>

if语句可以嵌套

switch 语句

语法:
switch(<testVar>)
{
case <comparisonVal1>:
<code executed if <testVar> == <comparisonVal1>>
break;
....
case <comparisonValN>:
<code executed if <testVar> == <comparisonValN>>
break;
default:
<code executed if <testVar> != <comparisonVals>>
break;
}

注意:C#与C++不同,不可以在运行完一个case语句后,运行另一个case语句
用break或return都可以防止这种情况,也可以用goto
例如:
switch(<testVar>)
{
case <comparisonVal1>:
<code executed if <testVar> == <comparisonVal1>>
goto case <comparisonVal2>;
case <comparisonVal2>:
<code executed if <testVar> == <comparisonVal2>>
break;
....

堆叠多个case语句
一次检查多个条件,满足其中一个就会执行代码
例如:
switch(<testVar>)
{
case <comparisonVal1>:
case <comparisonVal2>:
<code executed if <testVar> == <comparisonVal1> or <testVar> == <comparisonVal2>>
break;
....

comparisonValX的值必须是一个常量或字面值



循环

循环就是重复执行一些语句

do 循环

语法:
do
{
<code to be loop>
} while(<test>);

while 循环

语法:
while(<test>)
{
<code to be loop>
}

for 循环

语法:
for(<initialization>;<condition>;<operation>)
{
<code to be loop>
}

循环的中断

命令 说明
break 立即终止循环
continue 立即终止当前循环(继续下一次循环)
goto 可跳出循环到指定标签
return 跳出循环及其包含函数

无限循环

while(true)
{
<code to be loop>
}
有时可能会用到无限循环,用除"continue"外的中断命令跳出循环
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: