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

1.3.2 将输出写入控制台

《C# 6.0本质论(第5版)》第1章C#概述,本章使用传统HelloWorld程序介绍C#,重点是C#语法基础,包括在C#程序中定义入口。通过本章的学习,将熟悉C#的语法风格和结构,并能写最简单的C#程序。本节为大家介绍将输出写入控制台。

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

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

1.3.2 将输出写入控制台

代码清单1-13中是用 System.Console.Write()而不是 System.Console.WriteLine()方法提示用户输入他的名和姓。 System.Console.Write()方法不在显示文本之后添加一个换行符,而是将当前位置保持在同一行上。这样用户输入的内容就会与提示内容处于同一行。代码清单1-13的输出清楚地演示了 System.Console.Write()的效果。

下一步是将使用 System.Console.ReadLine()获取的值写回控制台。在代码清单1-15所示的例子中,程序将在控制台上输出用户的全名。但这段代码使用的是 System.Console. WriteLine()的一个变体。输出1-5展示了对应的输出。

代码清单1-15 使用字符串插值进行格式化

  1. class HeyYou  
  2. {  
  3. staticvoid Main()  
  4.   {  
  5. string firstName;  
  6. string lastName;  
  7.  
  8.       System.Console.WriteLine("Hey you!");  
  9.  
  10.       System.Console.Write("Enter your first name: ");  
  11.       firstName = System.Console.ReadLine();  
  12.  
  13.       System.Console.Write("Enter your last name: ");  
  14.       lastName = System.Console.ReadLine();  
  15.  
  16.  System.Console.WriteLine(  
  17.  
  18. $"Your full name is { firstName } { lastName }.");  
  19.  
  20.   }  

输出1-5

  1. Hey you!  
  2. Enter your first name: Inigo  
  3. Enter your last name: Montoya  
  4. Your full name is Inigo Montoya. 

在代码清单1-15所示的例子中,不是先用 Write语句输出 Your full name is,再用 Write语句输出 firstName,然后用第三条 Write语句输出空格,***用 WriteLine语句输出 lastName。这个例子利用了C# 6.0的字符串插值(string interpolation)来进行一次性输出。在字符串插值中,编译器将字符串花括号中的部分解释为可以嵌入代码(表达式)的区域,编译器将对嵌入的表达式估值并将其转换为字符串。字符串插值不需要先逐个执行很多个代码片段,***再将结果组合成字符串,它可以一步完成这些输出。这使得代码更容易理解。

C# 6.0之前的版本利用的是复合格式化(composite formatting)来进行一次性输出。在复合格式化中,代码首先提供格式字符串(format string)来定义输出格式,参考代码清单1-16。

代码清单1-16 使用System.Console.WriteLine()的复合格式化进行格式化

  1. class HeyYou  
  2. {  
  3. staticvoid Main()  
  4.   {  
  5. string firstName;  
  6. string lastName;  
  7.  
  8.       System.Console.WriteLine("Hey you!");  
  9.  
  10.       System.Console.Write("Enter your first name: ");  
  11.       firstName = System.Console.ReadLine();  
  12.  
  13.       System.Console.Write("Enter your last name: ");  
  14.       lastName = System.Console.ReadLine();  
  15.  
  16.  System.Console.WriteLine(  
  17.  
  18. "Your full name is {0} {1}.", firstName, lastName);  
  19.  
  20.   }  

本例的格式字符串是" Your full name is {0} {1}."。它为要在字符串中插入的数据标识了两个索引占位符。每一个占位符对应着格式字符串之后顺序出现的参数。

注意,索引值是从零开始的。每个要插入的参数,或者称为格式项(format item),按照与索引值对应的顺序排列在格式字符串之后。在本例中,由于 firstName是紧接在格式字符串之后的***个参数,所以它对应于索引值0。类似地, lastName对应于索引值1。

注意,占位符在格式字符串中不一定按顺序出现。例如,代码清单1-17中的代码交换了两个索引占位符的位置并添加了一个逗号,从而改变了姓名的显示方式(参见输出1-6)。

代码清单1-17 交换索引占位符和对应的变量

  1. System.Console.WriteLine("Your full name is {1}, {0}",  
  2.   firstName, lastName); 

输出1-6

  1. Hey you!  
  2. Enter your first name: Inigo  
  3. Enter your last name: Montoya  
  4. Your full name is Montoya, Inigo 

占位符除了能在格式字符串中按任意顺序出现之外,同一个占位符还能在一个格式字符串中多次使用。另外,也可以忽略占位符。然而,每个占位符都必须对应一个参数,不能使用没有对应参数的占位符。

因为C# 6.0风格的字符串插值比复合字符串方式更易理解,本书的后续章节我们将默认使用字符串插值方法。

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

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人订阅学习

读 书 +更多

Visual C++编程从基础到实践

Visual C++ 6.0是Microsoft公司的Visual Studio开发组件中最强大的编程工具,利用它可以开发出高性能的应用程序。本书由浅入深,从基础到实...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客