Miscellaneous
关于右移位运算的规则
若左操作数类型为 int 或 long,则作算数移位,即使用原数符号位(最高位)填充移位后的空余高位;若左操作数类型为 uint 或 ulong,则作逻辑移位,即使用 0 填充移位后的空余高位。
关于字符串分割:使用
Split
方法。例如str.Split(' ')
按空格分割字符串。关于基本数据类型和 byte array 之间的转换
使用 BitConverter 类可以把 byte array 对象(用十六进制表示)打印出来。
使用 Encoding.UTF8.GetString(array) 可以把 byte array 对象按 UTF8 编码转换为字符串。
关于COM 口数据收发
使用 Serial Port 类
关于预处理指令
C# 的预处理机制并不强大,可以使用的如 if else endif 等条件判断以及逻辑运算符。
与 C 中 #ifdef 等效的是 #if,用于判断一个 symbol 是否被 #define 定义过。
关于 ?. 运算符
x?.y
的逻辑为:当 x 为空对象时,该表达式的值为空;否则正常返回x.y
的值。算是一个简单的语法糖。
关于枚举
使用
Enum.Parse(EnumClass, enumObjectName)
来将字符串enumObjectName
解析为同名的枚举值。从枚举值到字符串则直接使用 ToString 即可。
关于 StringBuilder
更高效地构建字符串。
关于模板类
C# 中叫 Generic class.
关于 switch
关于 lambda 表达式
(input-parameters) => expression
为一个 expression lambda(input-parameters) => { <sequence-of-statements> }
为一个 statement lambdaIf a lambda expression doesn't return a value, it can be converted to one of the
Action
delegate types; otherwise, it can be converted to one of theFunc
delegate types.
Last updated
Was this helpful?