运算符

1、checked 和 unchecked

checked 如果一个代码块被标记为checked,CLR就会执行溢出检查,如果溢出,就会抛出异常。

btye b=255;//btye只能为0~255
checked
{
        b++; 
}

反之 unchecked就是不检查内存溢出  但是b++依然超出了,溢出的位会被丢掉,所以b变量得到的值是0;

2、is运算符,可以检查对象是否与特定的类型兼容。

int i=0if(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“; --如此。

 

    

posted @ 2013-04-15 22:29  hyxwcl  阅读(138)  评论(0编辑  收藏  举报