《Inside C#》笔记(九) 表达式和运算符
赋值和比较操作是一门语言最基本的功能。
一 基本概念
a)基本的运算符有加、减、乘、除、取余、赋值。
运算结果需要保存在内存的某个区域,有时直接保存在操作数本身,不管怎样,如果没有保存运算结果,编译器会报错。
大多数运算符都只能操作值类型(还有包括decimal),==、!=、=还可以操作对象,+、+=可以操作字符串,+=也可用于事件注册。
b)运算符的优先级,从上到下依次降低
c)运算符的执行顺序
加减乘除等二元运算符从左到右执行、’=’从右向左执行。
d)特殊运算符
typeof
用来取得类的Type,主要用于反射
sizeof
用来获取某个类型占用的字节数,比如sizeof(int)=4,sizeof(bool)=1。原来bool类型占用一字节,一直以为是一比特的。sizeof也能用在自定义类型如结构体上。
e)一元运算符+、-
用来指示数值的正负,为了避免混乱,最好加上括号,如a=b*(-c);
二 其它运算符
a)混合运算符
+=、-+这一类的,结果上相当于a=x+y这样的写法,但实际上具体执行过程是有区别的,尤其是涉及到方法调用的场合,比如:
加黑的代码对应的IL码如下
方法竟然被调用了两次,这在有些时候可能会带来莫名其妙的问题。
而混合运算符只调用方法一次:
所以推荐尽量用混合运算符
b)自增自减运算符
i++与++i的区别:i++ 返回原来的值,++i 返回加1后的值
c)比较运算符
>=、<=、!=、==
==比较引用类型时,对比的是两者的地址,要想比较两者的内容,可以重写equals方法