- C# 从入门到项目实践(超值版)
- 聚慕课教育研发中心
- 2879字
- 2021-03-24 02:36:09
2.2 C#基本语法
C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说是在相同的class中。
2.2.1 命名空间、标识符及关键字
1. 命名空间
命名空间是.NET中提供应用程序代码容器的方式,这样就可以唯一地标识代码及其内容。
在C#中,创建命名空间的关键字是namespace,在运行Visual Studio 2017时会自动加入命名空间,格式为namespace空间名称。命名空间是以“层”形式存在的,如果有多层,则以“.”分开。
例如:
在引用Generic命名空间时,需要引用System命名空间,然后再引用Collections命名空间。这就好比每层包含的文件夹,打开System文件再打开Collections文件,就找到Generic文件了。
在引用命名空间时需要注意以下两点:
(1)有时命名空间相当长,输入时很烦琐,则可以使用using关键字,在文件的顶部列出类的命名空间,这样引用一个命名之间后,访问其空间内的方法就如同向在其类内访问一样。
(2)using还有另一个作用,就是给命名空间一个别名。如果命名空间的名称非常长,又要在代码中使用多次,而用户不希望该命名空间的名称包含在using指令中,这时就可以给该命名空间指定一个别名。
其语法如下:
【例2-2】编写程序,通过别名引用命名空间。
(1)在Visual Studio 2017中,新建名称为“Project2”的文件。
(2)在代码编辑区域输入以下代码。
图2-2 引用命名空间
【程序分析】本例演示了通过别名引用命名空间。在代码的开头部分,使用using指令声明一个别名MK,代替System命名空间中的Console类。然后在Project2命名空间的Main方法中,使用MK,引用WriteLine方法,并输出一段语句。
在Visual Studio 2017中的运行结果如图2-2所示。
2. 标识符
标识符是程序编写人员为常量、变量、数据类型、方法、函数、属性、类、程序等定义的名称。在命名标识符时应当遵守以下规则:
(1)标识符不能以数字开头,也不能包含空格。
(2)标识符可以包含大小写字母、数字、下画线和@字符。
(3)标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
(4)@字符只能是标识符的第一个字符。带@前缀的标识符称为逐字标识符。
(5)不能使用C#中的关键字。但是,@字符加关键字可以成为合法的标识符,建议不要这样做。
(6)不能与C#的类库名称相同。
3. 关键字
关键字对于C#编译器而言,是具有特定含义的名称,例如程序中的using、class、static、void都属于关键字。如果错误地将关键字用作标识符,编译器会产生错误,用户马上就会知道出错了,所以不必担心。但是,如果用户想使用这些关键字作为标识符,可以在关键字前面加上@字符作为前缀。
下面列出了C#中所有的保留关键字。
4. 上下文关键字
上下文关键字仅在受限制的程序上下文中具有特殊含义,并且可在该上下文外部用作标识符。但是它不是C#中的保留字,用户可以将这些关键字用作自己的方法、变量和类的标识符,如下所示。
注意:在Visual Studio 2017的代码和文本编辑器窗口中输入这些关键字时,它们的颜色默认为蓝色。
2.2.2 类名
当用户定义一个类时,就表示定义了一个数据类型的蓝图。这实际上并没有定义任何的数据,但是它定义了类的名称,这就意味着类的对象由什么组成以及在这个对象上可执行什么操作。对象是类的实例。构成类的方法和变量称为类的成员。
C#中所有的语句都必须位于类的内部。因此,类是C#语言的核心和基本构成模块。C#支持自定义类,使用C#编程就是编写自己的类来描述实际需要解决的问题。
类的定义是以关键字class开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式:
注意:
(1)类修饰符指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是internal,成员的默认访问标识符是private。
(2)在C#中,类名是一种标识符,必须符合标识符的命名规则。类名要能够体现类的含义和用途,类名一般采用第一个字母大写的名词,也可以采用多个词构成的组合词。
(3)如果要访问类的成员,用户要使用点“.”运算符。点运算符连接了对象的名称和成员的名称。
例如,声明一个简单的类,该类没有任何意义:
2.2.3 Main方法
1. Main方法简介
(1)一般情况下,一个C#可执行程序只有一个应用程序对象(也就是程序入口),但是在某些情况下,可能会有多个应用程序对象(程序入口),如单元测试中,这个时候就需要通过命令行指定以哪个Main方法作为程序的入口。
(2)分析Main方法,用户可以发现Main方法通过static修饰,这主要是让用户可以通过类名加方法的形式调用Main方法,用户在调用之前不需要创建对象的实例(也就是new出该对象)。
(3)分析Main方法的参数是一个字符串(string[] args),这个参数可以包含任意数量的命令行输入参数。
2. C#中Main方法的形式
在默认情况下,Visual Studio 2017生成的Main方法有一个void返回值,并且只接收一个参数(一个字符串数组,用于接收任意数量的命令行输入参数)。
例如:
这并不是唯一的Main方法的形式,以下的Main方法作为程序的入口点都是被允许的。
(1)整型返回类型,以字符串数组作为参数。
(2)没有返回值,没有参数。
(3)整型返回类型,没有参数。
注意:如果不给Main方法提供一个修饰符,那么Main方法默认就是私有的,当然Main方法可以定义成共有的,但是Visual Studio 2017会把程序的Main自动定义成隐式私有的,以确保其他程序不能直接调用另一个程序的入口点。
3. Main方法返回错误
绝大多数的Main方法会以void作为返回值,但是C#和其他C类型的语言一样,都可以从Main返回一个int。根据惯例,返回值0表示程序正常结束,而其他值(如-1)表示程序有异常发生。
2.2.4 代码注释
注释用于解释代码。编译器会忽略注释的条目。在C#程序中,多行注释以“/*”开始,并以字符“*/”终止,如下所示:
单行注释是用“//”符号表示。
例如:
2.2.5 C#语句
程序执行的操作采用语句表达。常见操作包括声明变量、赋值、调用方法、循环访问集合,以及根据给定条件分支到一个或另一个代码块。语句在程序中的执行顺序称为“控制流”或“执行流”。根据程序对运行时所收到的输入的响应,在程序每次运行时控制流可能有所不同。
语句可以是以分号结尾的单行代码,也可以是语句块中的一系列单行语句。语句块括在大括号“{}”中,并且可以包含嵌套块。
下面列出了C#中的各种语句类型及其关联的关键字。
(1)声明语句。声明语句引入新的变量或常量。变量声明可以选择为变量赋值。在常量声明中必须赋值。
例如:
(2)表达式语句。用于计算值的表达式语句必须在变量中存储该值。
(3)选择语句。用于根据一个或多个指定条件分支到不同的代码段。这一类语句包括if和switch语句。
(4)迭代语句。用于遍历集合(如数组),或重复执行同一组语句直到满足指定的条件。这一类语句包括while、do、for和foreach语句。
(5)跳转语句。用于将控制转移给另一代码段。这一类语句包括break、continue、goto、throw、return和yield语句。
(6)异常处理语句。用于从运行时发生的异常情况正常恢复。这一类语句包括throw、try…catch、try…finally和try…catch…finally。
try…catch语句用于捕获在代码块执行期间发生的异常,try…finally语句用于指定始终执行的最终代码,无论异常发生与否。
(7)checked和unchecked。用于指定将结果存储在变量中但该变量过小而不能容纳结果值时,是否允许数值运算导致溢出。
(8)using语句。用于获取资源,执行语句,然后释放资源。
(9)空语句。空语句只含一个分号,不执行任何操作,可以在需要语句但不需要执行任何操作的地方使用。
例如: