C#基础知识-基本语法篇
- 第2节 C#基本语法
- 2.1 C#程序结构
- 2.2 C# 结构解析
- 2.3 命名空间及标识符、关键字
- 2.3.1 别名的使用
- 2.3.2 标识符
- 2.3.3 C#关键字
更多C#基础知识详解请查看:C#基础知识 - 从入门到放弃
第2节 C#基本语法
2.1 C#程序结构
“Hello, World”程序历来都用于介绍编程语言。 下面展示了此程序的 C# 代码:
using System;
using System.Collections.Generic;
//using ...
//以上引用命名空间
namespace _Csharp程序结构
{
class Program //Program类
{
static void Main(string[] args) //static 静态 void 无返回值 Main 函数 - 程序起点
{
Console.WriteLine("Hello Word!");
Console.ReadKey();
}
}
}
//以上命名空间或者项目名称
输出:
Hello, World
“Hello, World”程序始于引用 System
命名空间的 using
指令。 命名空间提供了一种用于组织 C# 程序和库的分层方法。命名空间包含类型和其他命名空间。例如,System
命名空间包含许多类型(如程序中引用的 Console
类)和其他许多命名空间(如 IO
和 Collections
)。 借助引用给定命名空间的 using
指令,可以非限定的方式使用作为相应命名空间成员的类型。 由于使用 using
指令,因此程序可以使用 Console.WriteLine
作为 System.Console.WriteLine
的简写。
“Hello, World”程序声明的 Hello
类只有一个成员,即 Main
方法。 Main 方法使用 static
修饰符进行声明。 实例方法可以使用关键字 this
引用特定的封闭对象实例,而静态方法则可以在不引用特定对象的情况下运行。 Main
静态方法是 C# 程序的入口点。
程序的输出是由 System
命名空间中 Console
类的 WriteLine
方法生成。 此类由标准类库提供。默认情况下,编译器会自动引用标准类库。
2.2 C# 结构解析
有如下一个C# 程序代码:
using System;
using System.Collections.Generic;
using ...
//以上引用命名空间
namespace _Csharp程序结构
{
class Program //Program类
{
static void Main(string[] args)
//static 静态 void 无返回值 Main 函数 - 程序起点
{
Console.WriteLine("Hello Word!");
Console.ReadKey();
}
}
}
//以上命名空间或者项目名称
在次程序中:
1、 using System;
using
关键字用来在程序中引入 System
命名空间,一个程序中可以有多个 using
语句。
2、namespace _Csharp程序结构
namespace
关键字用来声明一个命名空间,“Csharp程序结构”则是命名空间的名字。命名空间是类的集合,上面代码中名为“Csharp程序结构”的命名空间中包含了一个名为“Program”的类。
3、class Program
class
关键字用来定义一个类,“Program”则是类的名,类中通常用来存放程序中要使用的数据和函数(也叫方法)。
4、static void Main(string[ ] args)
此行代码中,Main
为定义的函数名称,Main
函数是整个 C# 程序的入口,其中包含了程序运行时需要执行的操作。static 和 void 都是用来修饰 Main 函数的关键字,具体含义后面我们会详细介绍。
5、 //static 静态 void 无返回值 Main 函数 - 程序起点
这是程序的注释,当程序运行时被//
注释的内容将被编译器忽略,不会执行。注释主要用来对所写的代码进行说明。多行可使用/* */
/*
static 静态
void 无返回值
Main 函数 - 程序起点
*/
6、Console.WriteLine(“Hello World!”);
此行代码用来在命令行窗口中输出“Hello World!”。WriteLine
是 System
命名空间中定义的 Console
类里面的方法,用来输出一些消息。
7、Console.ReadKey( );
此行代码是针对 VS.NET
用户的,它会使程序进入等待状态,敲击键盘上的任意一个按键即可让程序继续运行。需要这行代码是因为命令行窗口会在程序运行结束后自动关闭,导致要输出的内容一闪而过,加入此行代码则可以避免这种情况。
另外,还有以下几点需要注意:
1、C# 区分大小写;
2、所有语句和表达式都必须以英文的分号;结尾;
3、程序从 Main 函数开始执行;
4、与 Java 不同,程序文件名可以与类名不同;
5、代码中出现的{
和}
都是成对出现的,用来标记代码块,{ }
中包裹的代码可以看作是一个整体。
2.3 命名空间及标识符、关键字
2.3.1 别名的使用
使用别名(alias)来为类型或命名空间定义一个新的名称,以简化代码并增强可读性。使用别名可以提供更简洁、易懂的类型或命名空间名称,或者使代码与外部库或组件更加兼容。
别名的使用可以通过以下两种方式来实现:
1、使用using语句:
使用using语句可以在给定的作用域内为类型或命名空间指定一个别名。这通常用于简化对长命名空间的引用。
using System;
using Co = System.Console;
//using ...
//以上引用命名空间
namespace _Csharp程序结构
{
class Program //Program类
{
static void Main(string[] args) //static 静态 void 无返回值 Main 函数 - 程序起点
{
Console.WriteLine("1、这是使用Console输出");
Co.WriteLine("2、这是使用别名Co输出");
Co.ReadKey();
}
}
}
//以上命名空间或者项目名称
输出结果:
1、这是使用Console输出
2、这是使用别名Co输出
2、使用typedef命令:
在一些特殊情况下,可以使用typedef命令来创建类型别名,这种方式只适用于在BCL(基础类库)中定义的类型。
typedef MyAlias = System.Collections.Generic.List<string>;
// 使用别名创建对象
MyAlias myList = new MyAlias();
// 使用别名调用方法
myList.Add("Hello");
需要注意:
① 别名仅在定义它们的范围内有效,如果使用别名的代码超出了别名的作用域,就需要重新引用完整的类型或命名空间。
② 使用别名可以提高代码的可读性和可维护性,特别是在涉及到长、复杂的类型或命名空间时。但是,在使用别名时应保持适度,确保别名具有明确、清晰的意义,不会与其他代码产生混淆。
③ 不建议定义系统自带的方法、函数等别名。
2.3.2 标识符
标识符是用来为类、变量、函数或任何其他自定义内容命名。C# 中标识符的定义规则如下所示:
1、标识符必须以英文字母开头,后面可以跟英文字母、数字0-9或下划线_
;
2、标识符中的第一个字符不能是数字;
3、标识符中不能包含空格或特殊符号,例如? - + ! @ # % ^ & * ( ) [ ] { } . ; : " ’ / \,但是可以使用下划线_
;
4、C#区分大小写;
5、标识符不能是 C# 关键字。
2.3.3 C#关键字
C# 中的关键字是编译器预先定义好的一些单词,也可以称为保留字或者保留标识符,这些关键字对编译器有特殊的意义,不能用作标识符。但是,如果非要使用的话只需要在关键字前面加上@
前缀即可:如@if
就是一个有效的标识符,而if
则是一个关键字。
下图列出了 C# 中的保留关键字(Reserved Keywords)和上下文关键字(Contextual Keywords):