|
|
|
|
移动端

2.6.3 不使用转型操作符的类型转换

《C# 6.0本质论(第5版)》第2章数据类型,本章将探讨这些数据类型,更深入地研究字符串类型,并引入数组的概念。本节为大家介绍不使用转型操作符的类型转换。

作者:周靖/庞燕 译来源:人民邮电出版社|2017-07-21 16:45

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.6.3 不使用转型操作符的类型转换

由于没有定义从字符串到数值类型的转换,因此需要使用像Parse()这样的方法。每个数值数据类型都包含一个Parse()方法,它允许将字符串转换成对应的数值类型。代码清单2-27演示了这个调用。

代码清单2-27 使用int.Parse()将一个string转换为数值数据类型

  1. string text = "9.11E-31";  
  2. float kgElectronMass = float.Parse(text); 

还可利用特殊类型System.Convert将一种类型转换成另一种类型。代码清单2-28展示了它的用法。

代码清单2-28 使用System.Convert进行类型转换

  1. string middleCText = "261.626";  
  2. double middleC = System.Convert.ToDouble(middleCText);  
  3. bool boolean = System.Convert.ToBoolean(middleC); 

不过,System.Convert只支持小的数据类型,而且是不可扩展的。它允许从bool、char、sbyte、short、int、long、ushort、uint、ulong、float、double、decimal、DateTime和string类型中的任何一种类型转换到另一种类型。

除此之外,所有类型都支持ToString()方法,可以用它提供一个类型的字符串表示。代码清单2-29演示了如何使用该方法,输出2-18展示了结果。

代码清单2-29 使用ToString()转换成一个string

  1. bool boolean = true;  
  2. string text = boolean.ToString();  
  3. // Display "True"  
  4. System.Console.WriteLine(text); 

输出2-18

  1. True 

对于大多数类型,ToString()方法只是返回数据类型的名称,而不是数据的字符串表示。只有在类型显式实现了ToString()的前提下才会返回字符串表示。最后要注意,完全可以编写自定义的转换方法,“运行时”的许多类都有这样的方法。

高级主题:TryParse()

从C# 2.0(.NET 2.0)开始,所有基元数值类型都包含静态TryParse()方法。该方法与Parse()非常相似,只是转换失败的情况下,它不引发异常,而是返回false,如代码清单2-30所示。

代码清单2-30 用TryParse()代替无效转型异常

  1. double number;  
  2. string input;  
  3. System.Console.Write("Enter a number: ");  
  4. input = System.Console.ReadLine();  
  5. if (double.TryParse(input, out number))  
  6. {  
  7. // Converted correctly, now use number  
  8. // ...  
  9. }  
  10. else  
  11. {  
  12. System.Console.WriteLine(  
  13. "The text entered was not a valid number.");  

输出2-19展示了结果。

输出2-19

  1. Enter a number: forty-two  
  2. The text entered was not a valid number. 

在上述代码中,从输入字符串解析到的值是通过out参数(本例是number)返回的。

Parse()和TryParse()的关键区别在于,假如转换失败,TryParse()不会引发异常。string到数值类型的转换是否成功,往往要取决于输入文本的用户。用户完全有可能输入无法成功解析的数据。使用TryParse()而不是Parse(),就可以避免在这种情况下引发异常(由于预见到用户会输入无效数据,所以要想办法避免引发异常)。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读——网络组建

本书以一个模拟局域网组建为思路,介绍了与局域网组建各主要方面相关的知识及组建、配置方法。本书所介绍的内容主要包括:局域网组建规划、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊