您的位置:首页 > 编程语言 > C#

C#语言 -- 类型转换

2015-08-10 15:08 405 查看
C#语言主要有两种类型:

值类型:直接存储在内存的栈上面;int, bool, struct, enum,
引用类型:在栈上只存储一个引用,堆上面才会存储具体的值;内建引用:object, string,dynamic; class

C#类型转换

C#是一种强类型的编程语言,即在编译的时候进行类型的检查。

类型转换的形式:

1. 隐式转换:

//1. 隐式转换;用于小的类型向大的类型转换;子类向基类转换;
int i = 10;
long l = i;

2. 显式转换:有数据丢失可能无法强制转换,要使用异常机制

//2. 显式转换:有大的范围向小的范围转换; 基类向子类转换:
double d = 10.05;
int iFromD = (int)d;

使用as: as只能用于引用类型和非空类型

C1 c1 = new C1();

C2 c2 = c1 as C2;  //不会报错,如果转换失败,则c2=null;

3. 通过Method进行转换:

 int iFroms = Convert.ToInt32("100");

或者:int iFroms =Int32.Parse("100");

或者:int iFroms2;

            bool iFroms = Int32.TryParse("100", out iFroms2); //尝试去转换


C#的装箱和拆箱和Nullable类型

1. 装箱: 将一个值类型转换成引用类型 :将栈中的值类型打包放入堆中

//装箱:是一个隐式转换,不需要特别的语法
int iToBoxing = 100;
object iBoxed = iToBoxing;

2. 拆箱: 将一个引用类型转变成值类型

//拆箱: 通过显式转换实现,可能有数据丢失或出错
int iUnBoxing = (int)iBoxed;


由于装箱和拆箱比较消耗资源,因此应当尽量避免使用

3. 另值类型可为空:

int? iNullable = 100;

相当于:System.Nullable<int> iNullable = 100;

访问时用: iNullable.hasValue; 判断是否有值,如果有,则可以用iNullable.Value; 访问;

或者:iNullable.GetValueOrDefault(); 如果为空,返回0, 不为空,返回该值

另外: int ii = iNullable ?? 500; // 如果iNullable为空,则赋值为500,不为空,则保持原值


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: