c#运算符

关系运算符

两个数据之间的关系运算

下表显示了 C# 支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。(A == B) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。(A != B) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(A > B) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。(A < B) 为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(A >= B) 不为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(A <= B) 为真。

1.1注意

  1. 和属性赋值一样,需要处理关系的这两个数据之间必须保持类型最终一致

  2. 关系运算符运算的最终结果值只有两个:true、false

赋值运算符

2.1什么是赋值运算符

在给等号左边数据赋值的时候,先考虑是否要进行运算赋值

2.2常见赋值运算符

运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数C = A + B 将把 A + B 的值赋给 C
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操 作数C += A 相当于 C = C + A
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操 作数C -= A 相当于 C = C - A
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操 作数C *= A 相当于 C = C * A
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操 作数C /= A 相当于 C = C / A
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C %= A 相当于 C = C % A
<<=左移且赋值运算符C <<= 2 等同于 C = C << 2
>>=右移且赋值运算符C >>= 2 等同于 C = C >> 2
&=按位与且赋值运算符C &= 2 等同于 C = C & 2
|=按位或且赋值运算符C|= 2 等同于 C = C|2
^=C &= 2 等同于 C = C & 22C ^= 2 等同于 C = C ^ 2

杂项运算符

3.1常用杂项运算符

  1. sizeof()返回数据类型(值类型)的大小(求指定值类型所占内存大小,以字节为单位)。sizeof(int),将返回4

  2. typeof()返回class的类型。typeof(StreamReader); 在之后学习反射

  3. 三元运算符:?x:y 条件表达式,如果条件为真?则为x:否则为y

  4. is判断对象是否为某一类型

  5. as-if(ford is car);// 检查ford是否是car类的一个对象。

  6. as强制转换,即使转换失败也不会抛出异常。

3.2三元运算符

Exp1 ? Exp2 : Exp3;

条件运算符 ? :,可以用来替代 if...else语句。它的一般形式如下:

其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

3.3 as类型转换

作用基本上和类型前带括号转换方式作用是一样,都是将数据转成目标类型,但是as即使转换不成功,也不会直接抛异常,而使用前缀括号转换不成功直接报错。

 

 

事件的参数

4.1 sender参数

所有事件的sender参数的类型是一样的:object

sender参数代表事件的发起者对象,这个事件是由哪个对象生成的,那么通过这个sender参数获取到这个对象

4.2 e参数

e参数是事件的触发者对象,这个事件是由哪个对象触发的,则e就是谁,例如所有的鼠标事件,e就是鼠标对象

运算符优先级

类别运算符结合性
后缀() [] . ++ --从左到右
一元+ - ! ~ ++ -- (type) & sizeof从右到左
乘除* /从左到右
加减+从左到右
移位<< >>从左到右
关系< <= > >=从左到右
相等== !=从左到右
位与 AND&从左到右
位异或^从左到右
位或 OR|从左到右
逻辑与 AND&&从左到右
逻辑或 OR||从左到右
条件?:从右到左
赋值= += -= *= /= %=>>= <<= &= ^= |=从右到左
逗号,从左到右

逻辑控制语句

6.1逻辑控制

控制计算机阅读代码的一个顺序逻辑,作用提高算法的执行效率

6.2条件判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)

6.2.1判断语句

  1. if语句( 一个if语句由一个布尔表达式后跟一个或多个语句组成。)

  2. if...else...语句(一个if语句后可跟一个可选的else语句,else语句在布尔表达式为假时执行。)

  3. 当使用 if...else if...else... 语句时,以下几点需要注意

    • 一个 if 后可跟零个或一个else,它必须在任何一个 else if 之后。

    • 一个 if 后可跟零个或多个 else if,它们必须在 else 之前。

    • 一旦某个else if匹配成功,其他的else if或else将不会被测试。

  4. 嵌套if语句(可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

    例子:

    针对if...if...if.../if...else if...else.../if...else if...else if...的结果区别

    • 三个if的结果有八种

    • if...else if...else...结果有三种

    • if...else if...else if...结果有四种

  5. switch语句(一个 switch 语句允许测试一个变量等于多个值时的情况。)

    switch(expression){
    case constant-expression : 
            statement(s);
    break;
    case constant-expression :
            statement(s);
    break;
    /* 您可以有任意数量的 case 语句 */ 
    default : /* 可选的 */
            statement(s); 
    break;
    }

    switch 语句必须遵循下面的规则 :

    • switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个class类型,其中class有一个单一的转换函数将其转换为整型或枚举类型。

    • 在一个switch中可以有任意数量的case语句。每个case后跟一个要比较的值和一个冒号。

    • case的constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量

    • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止

    • 当遇到break语句时,switch终止,控制流将跳转到switch语句后的下一行。

    • 不是每一个case都需要包含break。如果case语句为空,则可以不包含 break,控制流将会继续后续的case,直到遇到 break 为止。

    • C#不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。

    • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

    • C# 不支持从一个case标签显式贯穿到另一个case标签。如果要使C#支持从一个case标签显式贯穿到另一个case 标签,可以使用 go to 一个 switch-case 或 goto default。

循环控制语句

7.1 for循环

一个 for 循环是一个允许编写一个执行特定次数的循环的重复控制结构。

for (init; condition; increment )
{
  statement(s);
}

下面是 for 循环的控制流:

init:循环变量初始化,可有可无

condition:循环条件,在循环条件存在时,务必保证在第一个分号之前声明init,这个初始化位置不一定在for小括号中,可有可无

  1. 当循环条件为真,则会执行statement(s)循环体

  2. 当循环条件为假,则循环结束

increment:循环变量自变,当每次循环体执行完一次必然会执行自变,可有可无

三者缺少任意一个这个循环语句变成死循环

7.2 foreach遍历循环

使用foreach可以迭代数组或者一个集合对象,遍历一个集合中的每一项,遍历到一项循环一次

foreach(var temp in arrayOfIntts)
{
 循环体
}

7.3 while循环和do...while循环

只要给定的条件为真,C#中的 while 循环语句会重复执行一个目标语句

while(condition)
{
 statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。

当条件为假时,程序流将继续执行紧接着循环的下一条语句

而do...while循环

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。

当条件为假时,程序流将继续执行紧接着循环的下一条语句

do
{
    statement(s);
}while( condition );

条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。

如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止

7.4 控制语句

7.4.1 break

break控制循环语句跳出当前循环

7.4.2 return

return控制程序代码直接跳出从他往后的所有代码直到本次条件结束

7.4.3 continue

continue控制程序跳出本次循环进入下一次循环

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值