|
|
51CTO旗下网站
|
|
移动端

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

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

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

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

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
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

超级网管员——网络应用

本书全面、深入地介绍了网络应用技术,主要内容包括:RMS权限管理服务、Exchange邮件服务、LCS即时消息服务、WSUS系统更新服务、Symantec网...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客