值类型转换的几种方式_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 值类型转换的几种方式

值类型转换的几种方式

 2014/12/11 17:17:43  Darren Ji  程序员俱乐部  我要评论(0)
  • 摘要:引用类型的转换方式有隐式转换、强制转换、as转换等。值类型的转换方式也有不少,本篇稍稍归纳。□隐式转换inti=10;floatf=i;Console.WriteLine(f);如果是值类型,当被转换变量的数值范围小于目标变量的数值范围,就可以实现隐式转换;如果是引用类型,子类可以隐式转换成父类。□强制转换floatf=10.56f;inti=(int)f;Console.WriteLine(i);如果是值类型,当被转换变量的数值范围大于目标变量的数组范围,考虑使用强制转换;如果是引用类型
  • 标签:方式 类型转换 值类型

引用类型的转换方式有隐式转换、强制转换、as转换等。值类型的转换方式也有不少,本篇稍稍归纳


□ 隐式转换

 

monospace; width: 100%; margin: 0em; background-color: #f0f0f0">int i = 10;
float f = i;
Console.WriteLine(f);

如果是值类型,当被转换变量的数值范围小于目标变量的数值范围,就可以实现隐式转换;如果是引用类型,子类可以隐式转换成父类。

 

□ 强制转换

 

float f = 10.56f;
int i = (int) f;
Console.WriteLine(i);

如果是值类型,当被转换变量的数值范围大于目标变量的数组范围,考虑使用强制转换;如果是引用类型,父类可以强制转换成某个子类。值得注意的是:强制转换可能会导致损失一些精度。

 

□ 通过System.Convert的静态方法实施转换

 

比如把一个整型转换成Sysem.Char类型。

char result = Convert.ToChar(68);
Console.WriteLine(result);

通过System.Convert转换失败会报OverflowException异常

 

□ 通过值类型的静态方法

 

把字符串转换成int类型。

string str = "11";
int i = int.Parse(str);
Console.WriteLine(i);

 

如果字符串中包含非数字,会抛出System.FormatException异常。

string str = "11a";
int i = int.Parse(str);
Console.WriteLine(i);

1

 

如何避免这种情况呢?
--使用int.TryParse方法可以避免这种情况。

 

string str = "11a";
int result = 1;
bool isSuccess = int.TryParse(str, out result);
if (isSuccess)
{
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("转换失败");
}


           

□ 通过IConvertible接口方法

 

由于所有的值类型都实现了IConvertible接口,可以通过该接口的方法实现值类型转换

char result =  ((IConvertible) 68).ToChar(null);
Console.WriteLine(result);

如果转换失败,会抛出System.InvalidCastException异常。

 

 

发表评论
用户名: 匿名