第二章 C#编程概述
2.1 一个简单的C#程序
SimplaProgram.cs
using Systme; // 告诉编译器这个程序使用 Systme 命名空间的 类型
namespace Simple // 声明一个新命名空间 Simple 大括号以内都是命名空间的成员
{
class Program // 声明一个类
{
static void Main() // 声明一个无返回类型的 Main 静态方法,是程序的起始点,仅限 Main 方法,其他命名无效
{
Console.WriteLine("Hi there!");
}
}
}
产生以下输出:
Hi there!
C#程序由一个或多个类型声明组成。程序的类型可以以任何顺序声明。以上,只声明了class类型。
命名空间
是与某个名称相关联的一组类型声明。SimpleProgram使用两个命名空间。创建了一个名称为Simple
新命名空间,并在其中声明了其类Program类
,还使用了Systme命名空间中定义的Console类。
2.2 标识符
标识符是一种字符串,用来命名如变量、方法、参数和其他程序结构。可以使用大写和小写字母CardDeck
、PalyerHand
。规则如下
- 字母和下划线(
a-z
、A-Z
和_
)可以用在任何位置 - 数字不能放在首位,可以放在其他任何地方
@
字符只能放在标识符首位。虽然允许使用,但不推荐将@
作为常用字符
2.3 关键字
关键字是用来定义C#语言的字符串记号。如下图:
注意:
- 关键字不能被用作变量名或任何其他形式的标识符,除非以
@
字符开始 - 所有C#关键字全部都由小写字母组成(但是.NET类型名使用Pascal大小写约定)
上下文关键字是仅在特定的语言结构中充当关键字的标识符。有特别的含义。两者的区别是,关键字不能被用作标识符,而上下文关键字可以在代码的其他部分被用作标识符。上下文关键字如下:
2.4 Main: 程序的起始点
每个C#程序必须有一个类带有Main方法(函数)。在上个SimpleProgram
程序中,被声明在Program类中。
- 每个C#程序的可执行起始点在
Main
中的第一条指令 -
Main
必须首字母大写
Main
的最简单形式如下:
static void Main()
{
// 更多语句
}
2.5 空白
程序中的空白指的是没有可视化输出的字符。包括:
- 空格
Space
- 制表符
Tab
- 换行符
- 回车符
例如,下面代码效果一致:
// 很好的格式
Main()
{
Console.writeLine("Hi, there!");
}
// 连在一起
Main(){Console.WriteLine("Hi, there!");}
2.6 语句
介绍语句的常用形式
语句是描述一个类型或者告诉程序去执行某个动作的一条源代码指令。
- 简单语句以一个分号结束,例如:
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}", var1);
块
块是一个由成对大括号包围的0条或者多条语句序列,它在语法上相当于一条语句。例如
{
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}", var1);
}
- 语法上只需要一条语句,而你需要执行的动作无法用一条简单的语句表达情况下,考虑使用块
- 有些特定的程序结构只能使用块。在这些结构中,不能使用简单语句提到块
- 虽然简单语句以分号结束,但块后面不跟分号。
2.7 从程序中输出文本
控制台窗口是一种简单的命令提示窗口,允许程序显示文本并从键盘接收输入。BLC提供一个Console
类,包含了输入和输出数据到控制台窗口的方法。
2.7.1 Write
Write
是Console类的成员,把文本字符串发送到程序的控制台窗口。
Console.Write("This is trivial text.");
2.7.2 WriteLine
WriteLine
是Console类的成员,在Write
基础上,末尾添加换行符。
2.7.3 格式字符串
Write
语句和WriteLine
语句常规形式中可以有一个以上的参数。
- 如果不只是一个参数,参数间用逗号隔开
- 第一个参数必须总是字符串,称为格式字符串。格式字符串可以包含替代标记。
- 替代标记在格式字符串中标出位置,在输出串中该位置将用一个值来替代。
- 替代标记由一个整数及括住它的一对大括号组成,其中整数就是替换值的数字位置。跟着格式字符串的参数称为替换值,这些替换值从0开始编号。
2.7.4 多重标记和值
在c#中,可以使用任意数量的替代标记和任意数量的值。
- 值可以以任何顺序使用
- 值可以在格式字符串中替换任意次
例如:
Console.WriteLine("Three integers are {1} {0} and {1}", 3, 6);