C#的显式和隐式转换
1.显式转换——小转大
2.隐式转换——大转小
is运算符
s运算符is运算符检查对象类型,在安全类型转换之前进行判断之用。
例如,要检查变量是否与object类型兼容: 注意:“兼容”表示对象是该类型,或者派生于该类型。
object o = "hahaha";
if(o is object)
{
string s = (string)o;
Console.WriteLine(s);
Console.ReadLine();
}
as运算符
as运算符用于执行引用类型的显式类型转换。
如果要转换的类型与指定的类型兼容,转换就会成功进行;
如果类型不兼容,as运算符就会返回值null。
如下面的代码所示:
object o = "hahaha";
object o2 = 1;
string s = o as string;
string s2 = o2 as string;
Console.WriteLine(s);
Console.WriteLine(s2);
Console.ReadLine();
as运算符允许在一步中进行安全的类型转换,不需要先使用is运算符测试类
型,再转换。
C#通过Method和Class进行类型转换
可以让int和string相互转换
string→int
int i = 100;string s = i.ToString(); 转换成string类型
int i = Convert.ToInt32("100");或者是int i = Int32.Parse("100");
或者是
int i;
bool succeed = Int32.TryParse("100",out i);
Console.WriteLine(i);//默认值为0
C#装拆箱和Nullable类型
什么是装箱?
装箱就是值类型转成引用类型。
为什么要装箱呢?
为了把值类型转化为引用类型来进行统一操作管理。
如下实例:
(装箱是需要消耗内存的,所以能不装箱就不要装箱。)
装箱的本质是什么?
装箱的本质就是在堆上创建了引用类型的副本,新创建的引用类型和原来的值类型相互独立。(并不是真正的装箱,原来的数据都在,只是在堆中创建了引用类型的副本)
什么是拆箱?
拆箱就是装箱的逆操作,就是把引用类型转变成值类型。
Nullable类型
Nullable的作用是为了定义一个可以为null的整数值
int? i = null;//定义一个可以为空的int类型的值
System.Nullable<int> j = 1;//等同于上句
int i2 = i ?? 100; //如果i值不为null,则i2的值为i,否则,i2的值为100
Console.WriteLine(i.HasValue);//空时为false,不空为true
Console.WriteLine(i.GetValueOrDefault());//空时为0,不空时是值
Console.WriteLine(i2);
Console.ReadLine();