类型转换
1.自动类型转换(隐式类型转换)
示例:
int result; //声明int变量
long sum; //声明long变量
int val1 = 10; //声明整型变量,赋值10
long val2 = 20; //声明长整型变量,赋值20
sum = val1 + val2; //val1自动转换成long整型,与val2相加,赋值给长整型sum
result = val1 + val2; // val1自动转换成long整型,与val2相加,赋值失败,不能赋给int型变量
2.强制类型转换(显式类型转换)
示例:
int result; //声明int变量
int val1; //声明int变量
long val2 = 10; //声明long变量
val1 = (int)val2; //强制转换长整型为短整型,赋值给int变量val1
decimal r =12.34m; //声明金钱变量赋值
decimal area = (decimal)Math.PI * r * r; //强制转换double数值为decimal类型
3.装箱和拆箱
值类型和引用类型之间的转换是所谓的装箱和拆箱。装箱是把值类型转换为Object类型,而把Object类型转换为值类型是拆箱。
示例:
int a = 10; //声明int类型,并赋值
System.Object obj = a; //把整型转换为引用类型
int b = (int)obj; //把引用类型转换为值类型
4.类型检查
为了避免在数据类型转换时出现异常,有必要在类型转换前进行类型检查。C#提供了两个类型检查的运算符:is 和 as 。is 运算符用了类型转换前的兼容性检查,as 运算符是在转换过程中类型兼容性的检查。
示例:
object obj = Math.PI; //声明一个对象类型
obj is double; //判断obj对象是double类型,结果为true
obj = ”hello”; //obj赋值为字符串“hello”
obj is double; //判断obj的值,结果为false
string str = obj as string; //类型转换成功,str的值为“hello”
int i = obj as string; //类型转换失败,str的值为null
5.类型转换方法
System.Convert转换类
方法有:ToDouble()、ToDeimal()、ToString()
另有方法:Parse()、TryParse()