Parse和TryParse是一对用来进行数据类型转换的方法,它们存在于各自的基础数据类型之中,它们都是静态方法,所以在使用时直接用类型进行限定。

使用格式

数据类型   变量 = 数据类型.Parse(字符串类型的值);

所以,这两个方法只能将string类型转换成基础数据类型。比如我们需要将一个字符串转换成float浮点数据。

string text = "12.85";
 
 float float_result = float.Parse(text);
 
 Console.WriteLine($"float_result = {float_result}");

输出结果

float_result = 12.85

Parse方法对字符串的要求极高,比如浮点数据后面可以带f或F,但是,将字符串“12.85f”或“12.85F”转换成float时,会提示错误:System.FormatException:“输入字符串的格式不正确。”

甚至超过要转换类型的范围,也会引发错误。比如,byte的范围是0-255,如果将字符串"256"转换成byte类型时,会引发下面的错误:System.OverflowException:“值对于无符号的字节太大或太小。”

所以,我们在用Parse方法时,务必确定给的原始字符串能转换成其它基础数据类型。下面的例子演示了部分字符串与基础数据类型的转换。

string text = "12.85";
 
 float float_result = float.Parse(text);
 
 double double_result = double.Parse(text);
 
 byte byte_result = byte.Parse("255");
 
 short short_result = short.Parse("32767");
 
 int int_result = int.Parse("2147483647");
 
 long long_result = long.Parse("9223372036854775807");
 
  
 
 Console.WriteLine($"float_result = {float_result}");
 
 Console.WriteLine($"double_result = {double_result}");
 
 Console.WriteLine($"byte_result = {byte_result}");
 
 Console.WriteLine($"short_result = {short_result}");
 
 Console.WriteLine($"int_result = {int_result}");
 
 Console.WriteLine($"long_result = {long_result}");

输出结果

float_result = 12.85
double_result = 12.85
byte_result = 255
short_result = 32767
int_result = 2147483647
long_result = 9223372036854775807

为了避免转换失败,C#提供了TryParse方法,即先判断该字符串是否可以转换成目标类型,如果能转换则使用它的转换结果。

TryParse方法会返回两个值。一个值由TryParse的返回类型决定,即bool型,为true表示执行转换成功,否则表示转换失败。另一值由out 方式返回,表示转换后的结果。关于out的用法,我们会在以后讲解。

观察下面的例子。

string source = "256";
 
 bool result = byte.TryParse(source, out byte v);
 
 if (result == true)
 
 {
 
     Console.WriteLine($"{source}字符串转换byte成功,v = {v}");
 
 }
 
 else
 
 {
 
     Console.WriteLine($"{source}字符串转换byte失败,v = {v}");
 
 }
 
  
 
 source = "255";
 
 result = byte.TryParse(source, out v);
 
 if (result == true)
 
 {
 
     Console.WriteLine($"{source}字符串转换byte成功,v = {v}");
 
 }
 
 else
 
 {
 
     Console.WriteLine($"{source}字符串转换byte失败,v = {v}");
 
 }

输出结果

256字符串转换byte失败,v = 0
255字符串转换byte成功,v = 255

这次我们依然尝试将字符串“256”转换成byte类型,结果提示失败,但是结果依然有值,就是byte值类型的默认值0。而后我们将字符串"255"转换成byte类型,结果提示成功。所以在不确定的情况下,我们建议使用TryParse方法更为安全。

当前课程源码下载:(注明:本站所有源代码请按标题搜索)
文件名:044-Parse方法与TryParse方法.zip
链接:https://pan.baidu.com/s/1Bq2lX7cruUbklLwgjGggSw
提取码:byte

——重庆教主 2024年1月23日