分享

Mr_Red

 昵称10504424 2013-04-07

C#高级编程——运算符

1.checked  和unchecked  是否检验溢出查询。

2.is运算符 检查对象是否和特定对象兼容。if(i is Object){...}

3.as运算符用于引用类型显式类型转换。  

object o1="something";  

object o2 = 5;    

string s1=o1 as string ;// s1 = something;  

string s2 = o1 as string ;//s2 =null;

4.sizeof可以确定栈中值类型需要的长度(单位字节);

5.可空类型 int? a= null ;不能因为该条件是false 就认为该条件对立面是true。

一、类型转换:

1.隐式转换-  从小往大

2.显示转换- 从大往小 long val = 3000000000; int i =  (int)val;//int最大值是2147483647 i值为 -1294967296

可以用

checked long val = 3000000000;

int i =  checked((int)val);//如果报错就抛出异常

再例如:无符号整数转换为char ushort c= 43; char symbol=(char)c; Console.WriteLine(symbol);

二、装箱和拆箱

C#数据类型可以分为在栈上分配内存的值类型和在堆上分配内存的引用类型 装箱和拆箱可以把值类型转换为引用类型,并把引用类型转换回值类型。

装箱: int myIntNumber=20; object myObject=myIntNumber;

拆箱: int myIntNumber=20; object myObject=myIntNumber; int mySecondNumber=(int)myObject;//只能对以前装箱的变量进行拆箱。

拆箱时应确保得到的值变量有足够的空间存储拆箱的值中的所有字段,否则会导致异常。

三、比较对象相等性

1,ReferencrEquals()方法:静态方法,测试两个引用是否引用同一个实例。

SomeClass x,y;

x=new SomeClass();

y=new SomeClass();

bool b1=ReferencrEquals(null,null);//true bool

b2 = ReferencrEquals(null,x);//false bool

b3= ReferencrEquals(x,y);//false

四、运算符重载

1.例子:

int myInteger=3;

uint myUnsignedInt=2;

double myDouble=4.0;

long myLong=myInteger+myUnsignedInt;//接收两个int参数,返回一个int,这个返回值虽有会转换为一个long

double myotherDouble=myDouble+myInteger;//同理 2.运算符重载的示例:Vector  

比较运算符的重载  

如果重载了“==”就必须重载“!=”

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多