C#基础——运算符

常用的运算符合:+,-,*,/,%,空连接运算符

算术运算符

一元运算符:++,--

int i = 10;  int j = --i;  int k = j++; 结果:i=9; j=10; k=9;


二元运算符:+,-,*,/,%

10/3 = 3;  10%3=1;   10%4=2;  10%5=0;


逻辑运算符:返回类型永远是布尔类型

一元运算符:取非(!)

bool b = true;  bool r = !b; 结果: ràfalse;


二元运算符:条件与(&&),条件或(||)

条件与符号的两边都是true的时候,整个表达式是true,只要有一个为false,则整个表达式为false


  if ((5 > 3) && (7 > 4))


  {

     //会执行语句


}


条件或(||)符号的两边都是false的时候,整个表达式是false,只要有一个为true,则整个表达式为true


 if ((5 > 3) || (4 > 7))


  {

     //会执行语句


}


字符串运算符(+)

string str = “zhang” + “san”;//str = “zhangsan”;


比较运算符:==,!= ,> ,>=,<,<=

判断是否相等:==。如:判断3和5是否相等: 3==5

判断是否不等:!=。如:判断3和5是否不等: 3!=5

判断是否大于>:如:判断3是否大于5: 3>5

判断是否大于等于>=:如:判断3是否大于等于5: 3>=5

判断是否小于<:如:判断3是否小于5: 3<5

判断是否小于等于<=:如:判断3是否小于等于5: 3<=5

注: double类型的数值和int类型的数值作比较是否相等时,不能用==,例:double  类型的5,可能是5.0001或者4.9999999,所以做比较不能用==,应该写成


double x=5; int y=5; if(Math.Abs(x-y)<1E-6){//相等}


赋值运算符:=,+=,-=,/=,*=,%=

给变量赋值:= 如:int age = 10;

先加再赋值:+= 如:age +=5; àage = age + 5;

-=,/=,*=,%=的算法和上面的一样。

三元运算符:?:规则:判断?前面的表达式是否为真(true):若是,则返回:前面的那个数据,否则返回:后面的数据。简单的说,就是个if..else语句。

int c = (10 > 9)?7:6;


Checked和unChecked运算符

例: byte b=255;b++; Console.WriteLine(b.ToString());当加上Checked时,byte b=255;  Checked{b++;} Console.WriteLine(b.ToString());注:用Checked编辑器选项进行编译,就可以检查所有未标记代码中的溢出,如果把一段代码块标记为checked,CLR就会执行益处检查,如果溢出就跑出OverflowException异常。如果要禁止检查,则可以把代码标记为unchecked。例: byte b=255;


Unchecked{b++;} Console.WriteLine(b.ToString());这样写就不会抛出异常,但会丢失数据,因为byte类型不能包含256,溢出位会丢失,所以b变量的得到的值是0。


注:  unChecked是默认行为。只有需要把几行未检查的代码放在一段显式标记为Checked的打代码中,才需要显式地使用unChecked关键字。


is运算符

is运算符可以检查对象是否与特定的类型兼容。加绒表示对象或者该类型或者派生类型。例:要价差变量是否与Object理性兼容可使用线面的代码”


int i=10; if ( i is object ){ Console.WriteLine(“ I is an object”);}


注:int和所有的数据类型一样,也从object继承而来;表达式 i is object将为true,并显示相应的消息。


as运算符

           as运算符用于执行引用类型的显示类型转换的类型,与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。


例:


Object  o1=”Some String”;


Object  o2=5;


String s1=o1 as string;//输出结果:s1=”Some String”;


String s2=02 as String;//输出结果:s2=null;


as运算符允许在一步中进行安全的类型转换,不需要先使用is运算符测试类型,再执行转换。


Sizeof运算符

使用Sizeof运算符可以确定栈中值类型需要的长度(单位是字节)。例:


Console.WriteLine(sizeof(int));


其结果显示数字4,因为int有4个字节。如果对于复杂类型(和非基元类型)使用sizeof运算符,就需要把代码放在unsafe块中。例:


Unsafe{Console.WriteLine(sizeof(Customer));}


Typeof运算符

    Typeof运算符表示一个特定类型的System.Type对象。例:typeof(String)返回表示System.String类型的Type对象,在使用反射技术动态查找对象的相关信息时,这个运算符很有用。


可空类型和运算符

可空类型与一元或二元运算符一起使用时,如果其中一个操作数或者两个操作数都是null,结果就是null。例:


int? a=null; int? b=a+4; //b的结果为null;


int? c =a*5; //c的结果为null


但是在比较可空类型时,只要一个操作数是null,比较结果就是false。既不能因为一个条件是false,就认为 对立面是true。例:


int? a=null;


if (a>=b) {Console.WriteLine(“a>=b”);}


else{Console.WriteLine(“a<b”);}  //结果:a<b


空连接运算符:??规则:判断其前面的数据是否为空(null),若不是整个表达式为其前面的数据,否则为其后面的数据。这个运算符发觉在两个操作数之间,第一个操作数是一个可空类型或引用类型;第二个操作数必须与第一个操作数的类型相同,或者可以隐含的转换成第一个操作数的类型。空合并运算符的计算如下:如果第一个操作数不是null,整个表达式就等于第一个操作数的值。如果第一个操作数是null整个表达式就等于第二个操作数的值。

int? a = 10;  int? b = null;  int? c = a??b;


注:如果一二个操作数不能隐含的转换为第一个操作数的类型,就会编译报错。


备注:如果想让那两个数据先运行,则用小括号()括起来。


    一个经典的两个变量值交换:a=(a+b)-(b=a);


练习题:


    1、比较|和||有什么不同? &和&& 有什么不同?


         |算数或  例:A|B 对 A ,B都进行判断。


         || 逻辑或。只有当A为假的时候才会对B进行判断。若A为真,则不继续对B进行判断。


         | &  会报所有条件判断完。


         ||  && 顺序判断,当不满足时,直接结束。


         程序举例:


class Program


   {


       static void Main(string[] args)


       {



输出结果:


6


4


           int i = 3, j = 3;



           if (i++ > 2 | i++ > 3 | i++ > 4)


               Console.WriteLine(i);


           if (j++ > 2 || j++ > 3 || j++ > 4)


               Console.WriteLine(j);


       }


   }              


上一篇:ASA防火墙与路由器R直连且直连能ping通


下一篇:厉害了,淘宝千万并发,14 次架构演进…