C#运算符和值类型扫盲

记录一些方便回顾的知识点。

算术运算符

加减乘除,取模%,自增自减。
注意 i++ 和 ++i 在赋值时的区别,与 C 语言相同。a = z++; 会先将z的值赋给a再自加1的运算。a = ++z;会先进行自加1的运算,然后再将值赋给a,(--)同理。紧紧把握从左到右,先看见什么就是什么即可。

关系运算符

== > < >= <= !=
满足返回true,不满足返回false。

逻辑运算符

&& || !
AND OR NOT

位运算符

位运算符主要用于对操作数执行逐位运算,如位与(&)、位或(|)、位异或(^)等。可以对布尔和整数数据执行位运算。

& 按位与运算 将第一个操作数的每个位与其第二个操作数的对应位进行比较。如果两个位都是1,那么结果位将是1;否则,结果将为0。 a & b (0)
| 按位或运算 将第一个操作数的每个位与其第二个操作数的对应位进行比较。如果其中一位为1,则结果位为1;否则,结果将为0。 a | b (1)
^ 按位异或运算 将第一个操作数的每个位与其第二个操作数的对应位进行比较。如果一位为0,另一位为1,则结果位为1;否则,结果将为0。 a ^ b (1)
~ 按位取反运算 它只对一个操作数进行操作,并且它将对每个操作数位进行反向运算。它将把1位变为0位,反之亦然。 ~(a) (1)
<< 二进制左移运算符 将数字根据指定的位数向左移动,0将被加到最低有效位上。 b << 2 (100)
>> 二进制右移运算符 将数字根据指定的位数向右移动,0将被加到最低有效位上。 b >> 2 (001)

赋值运算符

= += -= *= /= %= &= | ^= >>= <<=
先运算,后赋值

布尔值 true false, 默认值为false

运算优先级

需要自查,有括号一定能表现出自己想要的东西。

值类型

C#中数据类型在其自己的内存空间中保存数据值即为值类型。所有值类型均隐式派生自System.ValueType。
例如在执行int a = 10;时,将分配给a的内存空间存储10。将值类型变量从一个方法传递到另一个方法时,系统将在另一个方法中创建变量的单独副本。即使变量值在一个方法中被改变了也不会影响另一个方法中变量的值。

引用类型

引用类型不直接存储值,而是存储值的地址。即包含一个指向另一个存储数据的内存位置的指针。
因此对其进行引用时,传递的是指针信息。如果已经对其进行更改,之后调用也会随之更改。
注意之前说的String 类型是不可更改的,因此虽然String是引用类型但重新修改调用后也不会更改(会生成新东西)。

参考链接

  1. 有什么推荐的C#的学习资源嘛? - 码老头的回答 - 知乎 https://www.zhihu.com/question/520996786/answer/2382904462
posted @ 2023-01-06 17:53  芋圆院长  阅读(34)  评论(0编辑  收藏  举报