【IT168技术文档】
这次简述一下操作符
1.算术操作符
算术操作符包括加(+)、减(-)、乘(*)、除(/)和求余(%)。加减操作符除了用于整数和实数的加减运算外,还适用于枚举类型、字符串类型和委托类型,这是通过操作符重栽实现的。
2.赋值操作符string mf1="Mike"; string mf2="Cat"; string mf3=mf1+mf2;//mf3="MikeCat" using System; enum Weekday { Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday }; class MikeCat { static void Main() { Weekday mf1=Weekday.Sunday; Weekday mf2=mf1+3; Console.WriteLine("mf1={0},mf2={1}",mf1,mf2); } }//结果:mf1=Sunday,mf2=Wednesday
赋值就是给一个变量赋一个新值。c#中分简单赋值和复合赋值两类。
简单赋值:"=" a=b=c 等价于 a=(b=c)
复合赋值:"+=" "-=" "*=" "/=" "%=" "|=" "^=" "<<=" ">>=" a+=10 等价于a=a+10
3.比较操作符
比较操作符用来比较两个表达式的大小,如大于(>) < == != <= >= 。
4.逻辑操作符
逻辑与(&&) 逻辑或(||) 和 逻辑非(!)
5.位操作符是对数据按二进制位进行运算的操作符。c#位操作符包括按位与(&) | ~ << >>
6.is操作符using System; class MikeCat { public static void Main() { int a=6&3; Console.WriteLine("a={0}",a); //6的二进制是00000110,3的二进制是00000011,按位与后等于00000010,即2 int b=6|3; Console.WriteLine("b={0}",b); //6的二进制是00000110,3的二进制是00000011,按位或后等于00000111,即7 int c=~6; Console.WriteLine("c={0}",c); //6的二进制是00000110,按位取反后是11111001即-7 int d=6^3; Console.WriteLine("d={0}",d); //6的二进制是00000110,3的二进制是00000011,按位异或后等于00000101,即5 int e=6<<3; Console.WriteLine("e={0}",e); //6的二进制是00000110,左移三位后等于00101000,即48 int f=6>>2; Console.WriteLine("f={0}",f); //6的二进制是00000110,右移二位等于00000001,即1 } }
is操作符用于检查运行时对象类型是否和给定的类型兼容。表达式"e is T"中的e是一个表达式,T是一个类型。返回值是一个布尔值。
如果满足下列两个条件,则 is 表达式计算为 true 值:
expression 非 null。
expression 可以被转换为 type。也就是说,将完成形式 (type)(expression) 的转换表达式而不引发异常。
示例
// cs_keyword_is.cs // The is operator using System; class Class1 { } class Class2 { } public class IsTest { public static void Test (object o) { Class1 a; Class2 b; if (o is Class1) { Console.WriteLine ("o is Class1"); a = (Class1)o; // do something with a } else if (o is Class2) { Console.WriteLine ("o is Class2"); b = (Class2)o; // do something with b } else { Console.WriteLine ("o is neither Class1 nor Class2."); } } public static void Main() { Class1 c1 = new Class1(); Class2 c2 = new Class2(); Test (c1); Test (c2); Test ("a string"); } } 输出 o is Class1 o is Class2 o is neither Class1 nor Class2.