运算符
1、checked 和 unchecked
checked 如果一个代码块被标记为checked,CLR就会执行溢出检查,如果溢出,就会抛出异常。
btye b=255;//btye只能为0~255 checked { b++; }
反之 unchecked就是不检查内存溢出 但是b++依然超出了,溢出的位会被丢掉,所以b变量得到的值是0;
2、is运算符,可以检查对象是否与特定的类型兼容。
int i=0; if(i is object) { Console.WriteLine("i is an object") }
3、as运算符,用于执行引用类型的显示转换。
object o1="string is type"; string s1=o1 as string
4、sizeof,类型信息运算符
namespace ConsoleApplication2 { class Program { public struct ss { private char s; private char e; private char w; private char q; private char d; private char g; // private int a; } static void Main(string[] args) { char cc = 'f'; ss s = new ss(); Console.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(cc));//1 Console.WriteLine(sizeof(char));//2 Console.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(s));//6 一个为1 6个char的实例 Console.WriteLine(sizeof(ss)); } } }
sizeof(sbyte)
1
sizeof(byte)
1
sizeof(short)
2
sizeof(ushort)
2
sizeof(int)
4
sizeof(uint)
4
sizeof(long)
8
sizeof(ulong)
8
sizeof(char)
2 (Unicode)
sizeof(float)
4
sizeof(double)
8
sizeof(bool)
1
如果将上面的代码private int a 放开 那么结构体的为12;应为本身为6+4(int的类型);在C语言里面struct的空间大小有个对齐原则,以占据空间最大的那个类型的大小的倍数对齐,也就是在这里,int a占了4字节,那么最终struct必须占据4的最小倍数,此处正常算出来是10,但是10不是4的倍数,必须补足到12.
注意:对于所有其他类型(包括 struct),sizeof 运算符只能在不安全代码块中使用。虽然可以使用 Marshal.SizeOf 方法,但该方法返回的值和 sizeof 返回的值并不总是相同的。Marshal.SizeOf 在已封送处理类型后返回大小,而 sizeof 返回公共语言运行时分配的大小(包括任何空白)。
5 ?可空运算符 在entityframework 中常见到 可空字段的标示法 int ?a=null
6??空接运算符
int ?a=null; int b; b=a??10; //10
??前的值如果不为null 将是第一个值 如果为null 为后者。
7 ++ --
int i=10; if(i++==11){ Console.WriteLine("false") ; } if(++i==12){ Console.WriteLine("true") ; }
i++执行 i=10比较不等11 好的 自己+1;++i自己+1与12比较 相等 打印”true“; --如此。