C#_02.16_基础七_.NET表达式&运算符
一、字面量:
字面量和变量的关系来理解字面量会比较简单:
因此字面量是源代码中键入已知的(我们知道它是多少的)值。也可以理解是等号右边的非创建实例的值。可以是布尔、字符、null等。
字面量可以分为:
² 数字字面量;1,2,3,-1;-2;-3;
² 实数字面量;1.9(double类型); 0.3F(float类型);0.3e-19
² 字符字面量;‘a’
² 字符串字面量;“a”
² 布尔字面量;true / false。
其中字符字面量会有一堆的转义字符:
(图片引自C#图解)
二、运算符的优先级:
(图片引自C#图解)
三、运算符:
在这个当中需要注意的是:
1、
逻辑运算符:
2、位移运算符:
位移运算符意思是堆与一个数值的二进制进行左移或者右移,左移时右边用0补足,右移时益处的部分不管他:
3、条件运算符:
条件运算符是三元运算符,其实使用if else是完全可以实现和三元运算符同样功能的,但是我们为什么要这样子做呢?因为if else是控制流语句,返回的应该是两种行为中的一个,而三元运算符是运算符,返回的应该是值。
4、typeof大法:
Typeof运算符作用是获取指定类的信息:
类如下:
结果如下:
另外还有一个方法GetType();这个方法对每一个类型的实例都有效,可以获得对应实例的类型名。Eg:
四、关于语句的一点点思考:
在说关于运算符的时候书本上面提到了一点是:运算符完成操作可能产生副作用,但是我并不明白副作用是什么意思,现在明白了:
运算符进行操作就会产生一个返回值,如1+2,这个运算符进行操作就会产生返回值3.这个是我们都知道的,但是其他的一些运算符比如“=”,这个运算符也会产生返回值。举栗子:
X=10;
以上表达式使用了赋值运算符,我们都知道把X的值赋值为10,但是事实上这个我们想要的效果是一个副作用。怎么说呢?运算符进行操作会产生返回值,X=10是赋值操作也是会产生返回值,返回值是X的新值,也就是说X=10这个操作返回了一个值“10”,这个才是这个运算符的正规的效果,而使x的值变成了10是一个副作用,因为原本运算符的操作就是为了返回值,让x=10只是这一个操作的一个副作用,在内存中存储了x的值,分配了内存空间,这个是副作用,而我们却没有用变量接收这个赋值操作的返回值。所以有一些运算符副作用才是我们想要的。我们可以进行测试:
以上测试我们发现:赋值运算是返回了a的新值。
Switch语句下面的每一个分支都需要有跳转语句跳出来:如break,return,throw之类的。