1.布尔逻辑
表中,var1都是bool类型的变量,var2和var3可以是不同类型,但是bool类型只能使用==和!=运算符。
常见错误:
当var1<var2为false时,var1>var2为true,则导致var1=var2在前面两句中都是false
^(异或)应用于逻辑运算,真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值相异结果为真。
2.分支
三元运算符:
语法格式:
<test>?<resultIfTrue>:<resultIfFalse>
其中,计算test可以得到一个布尔值,根据这个值确定是resultIfTrue还是resultIfFalse
if语句:
语法格式:
if(<test>)
{
<code executed if <test> is true>;
}
先执行test,如果test的计算结果为true,就执行该语句之后的代码;如果test的计算结果为false,则没有执行这段代码,就继续执行后面的代码行。
将else语句和if语句合并使用,指定其他代码。如果test的计算结果为false,就执行else语句:
if(<test>)
{
<code executed if <test> is true>;
}
else
{
<code executed if <test> is false>;
}
else if语句类似于if语句
switch语句:
switch(<testVar>)
{
case <comparisonVal1>:
<code to execute if <testVar> == <comparisonVal1>>
break;
case <comparisonVal2>:
<code to execute if <testVar> == <comparisonVal2>>
break;
……
case <comparisonValN>:
<code to execute if <testVar> == <comparisonValN>>
break;
default:
<code to execute if <testVar> != <comparisonVals>>
break;
}
testVar中的值与每个comparisonValX值进行比较,如果有一个匹配,就执行该匹配提供的语句。如果没有匹配,就执行default部分的代码。
break语句将中断switch语句的执行,return语句可以中断当前函数的运行。
基于变量类型在switch case中进行模式匹配(在具备模式匹配能力后,应做到让表达式过滤器尽可能精确,且在switch语句中应该是唯一的)。因为变量类型是已知的,所以可以访问该类型提供的方法和属性。
switch(<testVar>)
{
case int value:
<code to execute if <testVar> is an int>
break;
case string s when s.Length==0:
<code to execute if <testVar> is a string with a length=0>
break;
……
case null:
<code to execute if <testVar> == null>
break;
case var x:
<code to execute if <testVar> type>
break;
default:
<code to execute if <testVar> != comparisonVals>
break;
}
case关键字后跟着想要检查的变量类型(string、int等)。当case语句匹配时,该类型的值保存到声明的变量中;case语句后直接是一个字符串s的类型声明,s可以用来访问testVar中的值以及string类型中可用的方法和属性,when关键字修饰符允许扩展或添加一些额外的条件以执行case语句中的代码;var声明捕获任何其他变量类型。
3.循环
do循环:
执行标记为循环的代码,然后进行一个布尔测试
语法格式:
do
{
<code to be looped>
}while(<Test>);
while循环:
循环开始时进行布尔测试
语法格式:
while(<Test>)
{
<code to be looped>
}
for循环:
定义for循环,需要以下信息:初始化计数器变量的一个起始值;继续循环的条件,涉及计数器变量;每次循环最后,对计数器变量执行一个操作
语法格式:
for(<initialization>;<condition>;<operation>)
{
<code to loop>
}
循环的中断:
break——立即终止循环
continue——立即终止当前的循环(继续下次循环)
return——跳出循环及包含该循环的函数
foreach循环:
语法格式:
foreach(<baseatype> <name> in <array>)
{
//can use <name> for each element
}
循环迭代每个元素,不存在访问非法元素的危险。但是,只能进行只读访问,不能改变任何元素的值。