<C#高级编程>第2章笔记
第2章 C# 基础
语法
注释:与C++和Java一样,单行(//),多行(/*..*/)
命名空间:namesapce,形如java中的package,只是逻辑上的,而非物理上的。可以在命名空间中定义命名空间。
引用命名空间:using,形如java中的import。
为命名空间起别名:using 别名= 命名空间;
入口点:Main方法(注意大写),返回值为void或int,一个应用程序中只能有一个Main方法。可以有string[] args的参数列表来接受要传递给Main方法的参数。
变量
初始化:属性有默认值,局部变量必须显式初始化。
作用域:同一变量不能在作用域里面被定义两次。属性和局部变量可以区分开来,因此可以重复定义。
命名:必须以字母或下划线开头,但可以包含数字字符,字符可以用unicode表示。采用PASCAL形式或Camel形式。
如果要将某个保留字用作标识符,可以在其前面加上@号。
常量
定义:通过const关键字定义,只能用来修饰局部变量和属性(字段)。
初始化:必须在声明时初始化,必须能在编译时用于计算(不能从一个变量中提取的值来初始化常量),总是静态的(但不强制要求static)。
预定义数据类型
名称 |
CTS 类型 |
说明 |
|
范围 |
sbyte |
System.SByte |
值类型 |
整型 |
8位有符号整数 |
short |
System.Int16 |
值类型 |
整型 |
16位有符号整数 |
int |
System.Int32 |
值类型 |
整型 |
32位有符号整数 |
long |
System.Int64 |
值类型 |
整型 |
64位有符号整数 |
byte |
System.Byte |
值类型 |
整型 |
8位无符号整数 |
ushort |
System.Uint16 |
值类型 |
整型 |
16位无符号整数 |
uint |
System.Uint32 |
值类型 |
整型 |
32位无符号整数 |
ulong |
System.Uint64 |
值类型 |
整型 |
64位无符号整数 |
float |
System.Single |
值类型 |
浮点型 |
32位单精度浮点数 |
double |
System.Double |
值类型 |
浮点型 |
64位双精度浮点数 |
decimal |
System.Decimal |
值类型 |
浮点数 |
128位高精度十进制数表示法 |
bool |
System.Boolean |
值类型 |
布尔型 |
true或false |
char |
System.Char |
值类型 |
字符型 |
16位Unicode字符 |
object |
System.Object |
引用类型 |
|
|
string |
System.String |
引用类型 |
|
Unicode字符串 |
object是所有CTS类型的根类型,其他类型都由其派生而来(包括值类型),形如java.lang.Object。
string的@赋值方法:在字符串字面量前加上@,则字符串所有字符都不会被解释为转移字符。如:
string str = @"C:\ProCSharp\
First.cs";
实际上str的值就是:
C:\ProCSharp\
First.cs
语句
if 语句:判定条件如java一样,只能为布尔型。
switch 语句:参数可以为整数和字符串。
如果一个case子句不为空,则必须带有break来结束,要跳转可以用goto语句来表明要激活的case子句。
任何两个case值都必须是常量且值不能相同。
for、while、do..while 语句:形如Java和C++中的语句。
foreach循环:通过 for (int temp in arrayOfInts) 来定义。
goto语句:不能跳转到for循环这样的代码块中;不能跳出类的范围;不能退出finally块。
break、continue语句:类似于Java中的break与continue。
return语句:类似于Java中的return。
枚举
通过enum来定义,形如Java中的enum。会在后台自动实例化为System.Enum。
可以通过toString()方法转换为字符串,
也可以通过Enum.Parse(typeof(枚举类型), 字符串值, ignoreFlag)来转换字符串为枚举值。(ignoreFlag表示是否忽略大小写),
该方法将返回一个枚举类型的对象引用,之后可以通过(int)强制转换为整数。
数组
与Java的类似。长度是Length属性。
通过csc编译C#程序
执行 csc 需要设置环境变量,方法有:
① 运行 csc 之前执行批处理文件 %Microsoft Visual Studio .NET%\Vc7\bin\vcvars32.bat
② 通过VS .NET的命令行窗口代替普通的命令提示窗口。
可以通过/target参数来指定要创建的文件类型:
选项 |
输出 |
扩展名 |
/t:exe |
控制台应用程序(默认) |
.exe |
/t:library |
带有清单的类库 |
.dll |
/t:module |
没有清单的组件 |
|
/t:winexe |
Windows应用程序 |
.exe |
可以通过/out选项指定输出的文件名,默认使用输入的C#文件名及目标文件扩展名。
通过/reference选项(/r)来指定要引用的路径或文件名。
如:csc MathClient /r:MathLibrary.dll
通过/checked选项可以检查程序中所有为标记代码的溢出(当溢出时将抛出异常,而不会丢失数据)
预处理器指令
#define、#undef 形如C++。
#if、#elif、#else、#endif 形如C++。
#warning:产生警告,显示文本并继续进行
#error:产生错误,显示文本并退出编译,不会生成IL代码。
#region和#endregion:用于把一段代码标记为有给定名称的一个块,在部分编译器(如VS)中有美观作用。
#line:用于改变编译器在警告和错误信息中显示的文件名和行号信息。