学习记录 {第2篇} —— C#中的类型转换
隐式转换
隐式转换就是不需要我们自己做什么,C#编译器自己就默默将它完成了转换,这种转换都是小范围的值类型转到大范围的值类型(类中的里式转换也是属于隐式转换的范畴毕竟子类对象可以直接赋值给父类对象。)
小范围的值类型转为大范围的值类型,如下
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.5f;
double f = 6.6d;
b = a;//a为byte型,范围小于short型的b,所以这样赋值没问题。
a = b;//报错!因为b的范围大。
e = d;//整型的范围小于浮点型,所以整型的变量都可以隐式转换为浮点型。
子类对象赋值给父类对象,如下
public class Animal
{
public virtual void Say()
{
Console.WriteLine(".....");
}
}
public class Dog : Animal
{
public override void Say()
{
Console.WriteLine("wangwang!");
}
}
Animal a = new Dog();
a.Say(); // 输出 "wangwang!"
tips1:接口(Interface)也可以和上面的类一样,可以将继承某接口的类的对象直接赋值给该接口。
tips2:还有一种封箱转换(将值类型转换为引用类型)也属于隐式转换。而拆箱操作(将引用类型转为值类型)则属于下面讲的显示转换。
显式转换
所有非编译器自动转换的转换方式都是显式转换,也可以称为强制转换。
1、(Type)方式 都是用于数值间的转换
double a = 1.9;
int b = (int)a;
Console.WriteLine(b);//这种转换只取小数前的数字,这里输出1。
2、Convert方式 这种方式可以将字符串转数值,也可以数值之间转换,Convert类可以点出来很多方法,下面列举几个常用的,其它的用到时可以直接点出来测试下。
double a = 1.5;
int b = Convert.ToInt32(a);
Console.WriteLine(b);//这种小数转整数则是四舍五入,这里输出2。
string a = "5";
int b = Convert.ToInt32(a);//将这种整数字符串转成整型
Console.WriteLine(b);//输出5
string a = "5.5";
double b = Convert.ToDouble(a);//将浮点数字符串转成double型
Console.WriteLine(b);//输出5.5
3、Parse()方式 被转换的只能是string类型
string a = "5";
string b = "5.5";
string c = "true";
int aa = int.Parse(a);
double bb = double.Parse(b);
bool cc = bool.Parse(c);
Console.WriteLine(aa);//输出5
Console.WriteLine(bb);//输出5.5
Console.WriteLine(cc);//输出true
4、ToString() 可以将任意对象转换成字符串,因为ToString()是object类中的方法,而其他所有对象均继承自object。
-------------------------------------------第2篇结束-----------------------------------------------------------