C#程序设计入门经典之C#的基本语法

程序|设计|语法

  C#代码的外观和操作方式与C++和Java非常类似。初看起来,其语法可能比较混乱,不像书面英语和其他语言。但是,在C#编程中,使用的样式是比较清晰的,不用花太多的力气就可以编写出可读性很强的代码。

  与其他语言的编译器不同,无论代码中是否有空格、回车符或tab字符(这些字符统称为空白字符),C#编译器都不考虑这些字符。这样格式化代码时就有很大的自由度,但遵循某些规则将有助于使代码易于阅读。

  C#代码由一系列语句组成,每个语句都用一个分号来结束。因为空格被忽略,所以一行可以有多个语句,但从可读性的角度来看,通常在分号的后面加上回车符,这样就不能在一行上放置多个语句了。但一句代码放在多个行上是可以的(也比较常见)。

  C#是一个块结构的语言,所有的语句都是代码块的一部分。这些块用花括号来界定("{" 和 "}"),代码块可以包含任意多行语句,或者根本不包含语句。注意花括号字符不需要附带分号。

  所以,简单的C#代码块如下所示:

{
<code line 1, statement 1>;
<code line 2, statement 2>
<code line 3, statement 2>;
}
  其中<code line x, statement y>部分并不是真正的C#代码,而是用这个文本作为C#语句的占位符。注意在这段代码中,第2、3行代码是同一个语句的一部分,因为在第2行的末尾没有分号。

  在这个简单的代码块中,还使用了缩进格式,使C#代码的可读性更高。这不是我的发明,而是一个标准规则,实际上在默认情况下VS会自动缩进代码。一般情况下,每个代码块都有自己的缩进级别,即它向右缩进了多少。代码块可以互相嵌套(即块中可以包含其他块),而被嵌套的块要缩进得多一些。

{
<code line 1>;
{
<code line 2>;
<code line 3>;
}
<code line 4>;
}
  前面代码的续行通常也要缩进得多一些,如上面第一个示例中的第3行代码。

  注释

  在能通过Tools | Options访问的VS Options对话框中,显示了VS用于格式化代码的规则。在Text Editor | C# | Formatting节点的子目录下,包含了完整的格式化规则。此处的大多数设置都反映了还没有讲述的C#部分,但如果以后要修改设置,以更适合自己的个性化样式,就可以回过头来看看这些设置。在本书中,为了简洁起见,所有的代码段都使用默认设置来格式化。

  记住,这种样式并不是强制的。但如果不使用它,读者在阅读本书时会很快陷入迷茫之中。

  在C#代码中,另一个常见的语句是注释。注释并不是严格意义上的C#代码,但代码最好有注释。注释就是解释,即给代码添加描述性文本(用英语、法语、德语、外蒙古语等),编译器会忽略这些内容。在开始处理比较长的代码段时,注释可用于给正在进行的工作添加提示,例如“这行代码要求用户输入一个数字”,或“这段代码由Bob编写”。C#添加注释的方式有两种。可以在注释的开头和结尾放置标记,也可以使用一个标记,其含义是“这行代码的其余部分是注释”。在C#编译器忽略回车符的规则中,后者是一个例外,但这是一种特殊情况。

  要使用第一种方式标记注释,可以在注释的开头加上“/*”,在末尾加上“*/”。这些注释符号可以在单独一行上,也可以在不同的行上,注释符号之间的所有内容都是注释。注释中惟一不能输入的是“*/”,因为它会被看作注释结束标记。所以下面的语句是正确的。

/* This is a comment */
/* And so...
... is this! */
  但下面的语句会产生错误:

/* Comments often end with "*/" characters */
  注释结束符号后的内容("*/"后面的字符)会被当作C#代码,因此产生错误。

  另一个添加注释的方法是用“//”开始一个注释,其后可以编写任何内容,只要这些内容在一行上即可。下面的语句是正确的:

// This is a different sort of comment.
  但下面的语句会失败,因为第二行代码会解释为C#代码:

// So is this,

but this bit isn't.
  这类注释可用于语句的说明,因为它们都放在一行上:

<A statement>; // Explanation of statement
  前面说过有两种方法给C#代码添加注释。但在C#中,还有第三类注释,严格地说,这是//语法的扩展。它们都是单行注释,用三个"/"符号来开头,而不是两个。

/// A special comment
  在正常情况下,编译器会忽略它们,就像其他注释一样,但可以配置VS,在编译项目时,提取这些注释后面的文本,创建一个特殊格式的文本文件,该文件可用于创建文档说明书。具体内容见第28章。

  特别要注意的一点是,C#代码是区分大小写的。与其他语言不同,必须使用正确的大小写形式输入代码,因为简单地用大写字母代替小写字母会中断项目的编译。

  如果读者对C#语言没有什么了解,就很难理解这一点,看看下面这行代码,它在第2章的第一个示例中使用:

Console.WriteLine("The first app in Beginning C# Programming!");
  C#编译器能理解这行代码,因为Console.WriteLine()命令的大小写形式是正确的。但是,下面的语句都不能工作:

console.WriteLine("The first app in Beginning C# Programming!");

CONSOLE.WRITELINE("The first app in Beginning C# Programming!");

Console.Writeline("The first app in Beginning C# Programming!");
  这里使用的大小写形式是错误的,所以C#编译器不知道我们要做什么。

  幸好,VS在代码的输入方面提供了许多帮助,在大多数情况下,它都知道(程序也知道)我们要做什么。在输入代码的过程中,VS会推荐用户可能要使用的命令,并尽可能纠正大小写问题。

  C#控制台应用程序的基本结构

  下面看看第2章的控制台应用程序示例(ConsoleApplication1),研究一下它的结构。其代码如下所示:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Output text to the screen.
Console.WriteLine("The first app in Beginning C# Programming!");
Console.ReadKey();
}
}
}
  可以立即看出,上一节讨论的所有语法元素这里都有。其中有分号、花括号、注释和适当的缩进。

  目前看来,代码中最重要的部分如下所示:

static void Main(string[] args)
{
// Output text to the screen.
Console.WriteLine("The first app in Beginning C# Programming!");
Console.ReadKey();
}
  在运行控制台应用程序时,就运行这段代码,更准确地说,是运行花括号中的代码块。如前所述,注释行不做任何事情,包含它们只为了简洁而已。其他两行代码在控制台窗口中输出了一些文本,并等待一个响应。但目前我们还不需要关心它的具体机制。

  这里要注意一下如何实现上一章介绍的代码突出显示功能,虽然这对于Windows应用程序来说比较重要,但它是一个非常有用的特性。要实现该功能,需要使用#region和#endregion关键字,来定义可以扩展和收缩的代码区域的开头和结尾。例如,可以修改为ConsoleApplication1生成的代码,如下所示:

#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
#endregion
  这样就可以把这些代码行收缩为一行,以后要查看其细节时,可以再次扩展它。这里包含的using语句和其下的namespace语句在本章的后面解释。

  注释:

  以#开头的任意关键字实际上都是一个预处理指令,严格地说并不是C#关键字。除了这里描述的#region和#endregion关键字之外,其他关键字都相当复杂,用法也比较专业。所以,这是一个读者通读全书后才能探究的主题。

  现在不必考虑示例中的其他代码,因为本书前几章仅解释C#的基本语法,至于应用程序进行Console.WriteLine()调用的具体方式,则不在我们的考虑之内。以后会阐述这些代码的重要性。

时间: 2024-09-21 15:29:28

C#程序设计入门经典之C#的基本语法的相关文章

《Java 7程序设计入门经典》一1.4 Java语言

1.4 Java语言 本书使用Java语言来讲解编程的基础知识.虽然其他编程语言也可以用来达到此目的,但是由于以下两个原因,本书选择了Java:首先,它是世界上使用最广泛的计算机语言之一.所以从实际的观点看,它是绝佳的学习语言.其次,它设计和实现了一些特性,这些特性使得对编程基础知识的介绍变得简单. 但是还有第三个原因.Java展现了现代编程的许多特点.对Java的理解可以使你像专业程序员一样看待和思考编程工作.它是这个时代定义的语言之一. 计算机语言演进是一个正在进行的历史过程,而Java是其

《Java 7程序设计入门经典》一导读

前 言 本书通过Java语言来讲解编程的基础知识.该书假设读者之前没有任何编程经验.本书首先介绍最基本的知识,例如,如何编译和运行Java程序:接着,讨论关键字.运算符和一些形成Java语言的构造.本书还会涉及Java的应用编程接口(Application Programming Interface,API)库.其中,包括Swing框架,它可以用来创建具有图形用户界面(Graphical User Interface,GUI)的程序.还包括集合框架,它可以用来存储对象集合.简而言之,本书旨在对J

《Java 7程序设计入门经典》一2.13 使用强制类型转换

2.13 使用强制类型转换 尽管自动类型转换很有用,但是由于它们只能用于兼容类型间扩大范围的转换,它们也不能满足所有的编程需要.对于其他情况,只能运用强制类型转换.强制类型转换(cast)是告诉编译器将一种类型转换为另一种类型.所以,它需要显式类型转换.强制类型转换具有以下一般形式: (target-type) expression 这里,target-type指定特定表达式转化到何种目标类型.例如,如果想把表达式x/y的类型转换为int类型,可以写成: 这里,尽管变量x和y都是double类型

《Java 7程序设计入门经典》一3.1 从键盘输入字符

3.1 从键盘输入字符 到目前为止,本书中的示例程序都向用户显示信息,但不从用户接收信息.于是,只使用了控制台输出,没有使用控制台输入(即键盘输入).主要原因在于,许多Java输入需要依赖和使用本书还未讲到的特性.这些特性在后面才会提及.另外,在真实情况下,许多Java程序和applet是图形界面或是窗口界面的,而不是控制台的.因此,本书的例子很少使用控制台输入.但是,有一种控制台输入相对容易使用,那就是从键盘读入字符.因为本章有许多需要用到这个特性的例子,所以在这里讨论它们. 我们将用Syst

《Java 7程序设计入门经典》一3.17 习题

3.17 习题 1.写一个程序,从键盘读入字符,直到接收到一个英文句号(.).程序需要计算输入的空格的个数.在程序结束时输出总结果. 2.请写出if-else-if梯队的一般形式. 3.针对下列程序 其中最后的else子句与哪个if配对? 4.写一个for循环语句,从1000计数到0,步进值为-2. 5.下面的代码片段是否有效? 6.请解释break语句的用途(包括其两种形式.) 7.在下面的代码片段中,break语句执行后会显示什么? 8.下面程序片段的输出是什么? 9.for循环中的迭代表达

《Java 7程序设计入门经典》一2.15 表达式

2.15 表达式 运算符.变量和字面量都是表达式(expression)的组成部分.当在程序中遇到表达式时,会计算该表达式.因为它在前面的程序中已经用过,所以读者可能对表达式已有相当的直观理解.另外,Java的表达式也与代数中的表达式类似.但是,现在还是要讨论表达式的一些方面. 2.15.1 表达式中的类型转换 在表达式中,可能将两种或多种不同类型但互相兼容的数据混合.例如,因为short类型和long类型都是数值类型,所以在表达式中将它们混合使用.当一个表达式中混合不同种类的数据,它们会转换为

《Java 7程序设计入门经典》一2.11 速记赋值运算符

2.11 速记赋值运算符 Java提供了特别的速记(shorthand)赋值运算符,用于简化一些赋值语句代码.让我们从一些例子开始了解速记赋值运算符.赋值语句: 相同.这两个语句都是将x的值减去100赋予变量x. 在Java中,速记运算符可以用于所有的二元运算符(即需要两个操作数的运算符).速记运算符的一般形式为: var op= expression; 于是,算术速记运算符和逻辑速记运算符有以下几种: 因为这些运算符将运算与赋值结合起来,它们正式的名称是复合赋值运算符(compound ass

《Java 7程序设计入门经典》一1.1 计算基础

1.1 计算基础 考虑到你正在修一门编程课程,你可能已经对计算科学的基础知识有了一定的了解.但是,不是所有人都有同样的知识,或某些知识可能是不准确的.为此,在介绍Java语言之前,先介绍计算科学中的一些核心概念.在这个过程中,本章会定义一些关键术语. 1.1.1 计算机的硬件组成 由于计算机最终会运行编写的程序,因此了解计算机各部分运行的基本方式是有帮助的.任意一台计算机都由一系列的部件组成,它们协同运作,形成一个计算机整体.尽管计算机组成的部件随着时间推移不断演进,但是计算机仍有许多共同的关键

《Java 7程序设计入门经典》一2.3 字面量

2.3 字面量 在Java中,字面量(literal)指人类可以阅读的固定值的表示.例如,数100是字面量.字面量也常常称为常量(constant).大多数字面量及其用法非常直观,前面的示例程序中已经以各种形式使用过它们.现在正式地解释它们. Java的字面量可以是任意基本数据类型.每种字面量的表示取决于类型.如前所述,字符常量由单引号包括.例如,'a'和'%'都是字符常量. 整数字面量是没有小数部分的数.例如,10和-10是整数字面量.浮点字面量有小数点,小数点后是小数部分.例如,11.123