运算符的优先级
优先级从高到低:
1、基本运算符
. | 成员运算符 |
f(x) | 函数调用 |
a[x] | 下标 |
++a、--a | 自增、自减预算符(前置) |
new | |
typeof | |
checked | |
unchecked | |
delegate | |
sizeof | |
-> | 指向运算符 |
2、弹幕预算符
+、-(正负号)、!、a++、a--(后置)(T)x (类型强制转换) | |
await、&x *x(指针) |
3、算术运算符
*、/、% | 乘、除、取余 |
+、- | 加、减 |
4、
<<、>> | 位移运算符 |
<、 >、 >=、 <=、 is、 as | 关系类型检测运算符 |
==、 != | 判断是否相等 |
&、^、|、&&、|| | 逻辑运算符 |
?? | null合并 |
?: | 条件 |
=、*= | 赋值运算符和lambda表达式 |
详解:
-
括号里的优先级是最高的
-
同级别的优先级从左到右计算
-
赋值功能的操作符从右向左计算
-
.是成员运算符,可以查看对应的方法及属性,此外还可以
- 访问外部名称空间中的子集名称空间
- 可以访问名称空间可以访问类型的静态成员中的类型
- 可以访问类对象成员
- 创建文件等:System.IO(子集).File(类型).Create(静态成员)(路径)
[]用法
5.[]用于创建字典以及数组 声明数组的语法为:
int[] Array = new int[数组大小]
int[] Array = new int[]([]中不需要指定大小){数组元素的初始值}
数组需要注意越界问题 调用数组中的方法Lenght,然后Lenght-1即可防止数组越界
声明字典的语法
Dictionary<index,value> name = new Dictionary<index,value>();
其中 index表示下标 value表示值
typeof
typeof 查看一个类型的内部结构 属于是那种类型
default
default用于获取一个类型的默认值 如果是结构体类型 则返回0
如果是引用类型返回null
new
new在内存中创建一个类型的实例,并调用实例构造器
-var 声明隐式类型的变量 让编译器自己去推断数据类型
-除构造器外,还可以调用初始化器
-为匿名对象创建实例 如 var person = new{Name=.....}
-让子类把父类的方法隐藏
checked和unchecked
checked和unchecked用于检测一个值是否有溢出
delegate
delegate用于声明委托类型(不常用)
匿名方法 没有返回值、名字、数据类型,在末尾加=>符号
sizeof
sizeof只能用于结构体的数据类型 如int、float 除object和string
-用于自定义的结构体类型虚放在unsafe代码块中
->指针操作符
.是直接访问 ->是间接访问
-指针操作、取地址、指正访问成员操作斗只能用于结构体数据类型
IsNullOrEmpty
用于检测一个字符串是否为空