C++
一样,
C#
程序也采用区分大小写的自由书写格式,编译器会忽略多余的白空符;
C#
也支持“
\a
”、“
\n
”和“
\t
”等转移字符;
C#
的每个语句也都以分号“
;
”结束;语句块也用花括号对“
{
”和“
}
”来界定。参见下表:(红色为
C#
特有的)
C#
的符号与标记
说明
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

符号与标记

空白

空格
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
类的定义前加上一行,在键入“
///
”后,系统会自动生成下面代码中的灰色部分,然后你自己再添加绿色部分。
InBlock.gif
/// <summary>
InBlock.gif
/// Start class for simple HelloWorld
InBlock.gif
/// </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
)——
@"
……
"
不解析其中的转移序列。例如:
InBlock.gif
string fn =
@"C:\Doc\data.txt";
l
逐字标识符(
verbatim identifier
)——
@
标识符,不解析标识符,使关键字也可以用作变量名、类名和方法名等普通标识符。例如:
InBlock.gif
int @
for = 12;
3)可空类型符?
不能使用的对象,可以用设置其值为空
null
来标识。但是基本值类型是不能赋值为空的,那会导致编译错误。传统的经验解决办法是赋给其一个取值范围之外的值,如“
-1
”(
0xFFFFFFFF
),但这种方法并不标准。
现在
C#
给出了一种完美的解决方案——可空类型(
nullable type
):声明值类型的变量时,在变量名后添加可空类型的问号符“
?
”,则该变量成为可空类型,可以被赋值为空。
C#
中,还可以通过可空类型的共用只读属性
HasValue
,来判断可空类型变量是否为空。例如:
InBlock.gif
int? x = 123;
InBlock.gif
int? y =
null;
InBlock.gif
if (x.HasValue) Console.WriteLine(x.Value);
// 输出123
InBlock.gif
if (y.HasValue) Console.WriteLine(y.Value);
// 输出