(C#基本语法)1.符号与标记
与C++一样,C# 程序也采用区分大小写的自由书写格式,编译器会忽略多余的白空符;C# 也支持“\a”、“\n”和“\t”等转移字符;C# 的每个语句也都以分号“;”结束;语句块也用花括号对“{”和“}”来界定。参见下表:(红色为C# 特有的)C# 的符号与标记说明 符号与标记 空白 空格SP 制表符 水平制表符HT(Tab)或垂直制表符VT 标点 . , : ; 行结束符 回车CR 注释 //、/*、*/、///、/** 预处理指令 # 块 {} 泛型 <> 可空类型 ? 字符 Unicode字符 转移字符 \代码 逐字符 @"……"、@标识符 数值后缀 d D、f F、l L、lu LU、m M、u U、ul UL 运算符 +、-、*、/、%、++、--、<、==、>、?:、??、()、…… (1)文档注释符“///……”和“/**……*/”C# 除了支持C++的单行注释“// ……”和定界注释“/* …… */”外,还增加了与之对应的如下两种文档注释方式:l 单行文档注释“/// ……”——是“// ……”方式的扩展,增加了一个斜线符“/”。l 定界文档注释:“/** …… */”——是/* …… */方式的扩展,在起端增加了一个星号符“*”。这两种新注释,都用于C# 项目说明文档的自动提取和生成,说明文档采用的是XML格式,由C# 编译器自动生成。但是需要添加/doc编译器选项,或在Visual Studio的IDE中激活该功能。具体方法是:选“项目”菜单中的“*属性”菜单项;在IDE中部打开的项目属性页中,选左列的“生成”选项,在右边下部的“输出”栏中,选中“XML文档文件”复选框以激活文档自动生成功能,还可以输入或修改“输出路径”和文件名,缺省为项目的“bin\Debug”或“bin\Release”子目录和“项目名.XML”。参见下图:例如,C# 编译器为不加任何注释的HelloWorld项目所生成的说明文档为:// HelloWorld.XML
<?xml version="1.0"?>
<doc>
<assembly>
<name>HelloWorld</name>
</assembly>
<members>
</members>
</doc> 如果你在Program类的定义前加上一行,在键入“///”后,系统会自动生成下面代码中的灰色部分,然后你自己再添加绿色部分。/// <summary>
/// Start class for simple HelloWorld
/// </summary>则编译器会自动生成如下说明文档:// HelloWorld.XML
<?xml version="1.0"?>
<doc>
<assembly>
<name>HelloWorld</name>
</assembly>
<members>
<member name="T:HelloWorld.Program">
<summary>
Start class for simple HelloWorld
</summary>
</member>
</members>
</doc>(2)逐字符@C# 新引进的逐字符(verbatim character)@,可以避免解析字符串中的转移字符和标识符中的关键字等:l 逐字字符串(verbatim string)——@"……",不解析其中的转移序列。例如:string fn = @"C:\Doc\data.txt";l 逐字标识符(verbatim identifier)——@标识符,不解析标识符,使关键字也可以用作变量名、类名和方法名等普通标识符。例如:int @for = 12;(3)可空类型符?不能使用的对象,可以用设置其值为空null来标识。但是基本值类型是不能赋值为空的,那会导致编译错误。传统的经验解决办法是赋给其一个取值范围之外的值,如“-1”(0xFFFFFFFF),但这种方法并不标准。现在C# 给出了一种完美的解决方案——可空类型(nullable type):声明值类型的变量时,在变量名后添加可空类型的问号符“?”,则该变量成为可空类型,可以被赋值为空。在C# 中,还可以通过可空类型的共用只读属性HasValue,来判断可空类型变量是否为空。例如:int? x = 123;
int? y = null;
if (x.HasValue) Console.WriteLine(x.Value); // 输出123
if (y.HasValue) Console.WriteLine(y.Value); // 输出
<?xml version="1.0"?>
<doc>
<assembly>
<name>HelloWorld</name>
</assembly>
<members>
</members>
</doc> 如果你在Program类的定义前加上一行,在键入“///”后,系统会自动生成下面代码中的灰色部分,然后你自己再添加绿色部分。/// <summary>
/// Start class for simple HelloWorld
/// </summary>则编译器会自动生成如下说明文档:// HelloWorld.XML
<?xml version="1.0"?>
<doc>
<assembly>
<name>HelloWorld</name>
</assembly>
<members>
<member name="T:HelloWorld.Program">
<summary>
Start class for simple HelloWorld
</summary>
</member>
</members>
</doc>(2)逐字符@C# 新引进的逐字符(verbatim character)@,可以避免解析字符串中的转移字符和标识符中的关键字等:l 逐字字符串(verbatim string)——@"……",不解析其中的转移序列。例如:string fn = @"C:\Doc\data.txt";l 逐字标识符(verbatim identifier)——@标识符,不解析标识符,使关键字也可以用作变量名、类名和方法名等普通标识符。例如:int @for = 12;(3)可空类型符?不能使用的对象,可以用设置其值为空null来标识。但是基本值类型是不能赋值为空的,那会导致编译错误。传统的经验解决办法是赋给其一个取值范围之外的值,如“-1”(0xFFFFFFFF),但这种方法并不标准。现在C# 给出了一种完美的解决方案——可空类型(nullable type):声明值类型的变量时,在变量名后添加可空类型的问号符“?”,则该变量成为可空类型,可以被赋值为空。在C# 中,还可以通过可空类型的共用只读属性HasValue,来判断可空类型变量是否为空。例如:int? x = 123;
int? y = null;
if (x.HasValue) Console.WriteLine(x.Value); // 输出123
if (y.HasValue) Console.WriteLine(y.Value); // 输出
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。