首页 > 代码库 > 《Inside C#》笔记(九) 表达式和运算符

《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方法

 

 

 

 

《Inside C#》笔记(九) 表达式和运算符