最近开始学习C#编程语言,以前一直使用C/C++,也只是用到了一些最简单基础的用法。为了方便学习,将学习过程中C#语言与C/C++不同或不熟悉之处记录下来,以便日后随时查看。本人是通过阅读《C#入门经典(第6版)》学习C#,在阅读过程中随手作如下记录。
变量在使用之前必须对其进行声明和初始化。
switch每个分支必须带有break语句。
结构体声明时,成员变量类型前需带有访问控制方式(如public)。
数组声明方式 <baseType> [] <name>。可以通过name.Length获取数组的大小。
数组必须在访问之前初始化,初始化方式(任选其一):
1) int [] myIntArray = {5, 9, 10, 2, 99};
2) int [] myIntArray = new int[5];
可以结合使用两种初始化方式 int [] myIntArray = new int[5] {5, 9, 10, 2, 99};
foreach循环能够访问数组的所有成员,但只能进行只读访问
foreach (<baseType> <name> in <array>)
{
}
矩形数组(每一行的元素个数都相同):
二维数组的声明 <baseType> [,] <name>
多维数组的声明 <baseType> [,,,] <name> (此为一个四维数组)
二维数组的初始化例子:
1) double [,] myArray = new double [3,4];
2) double [,] myArray = {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6}};
元素的访问 myArray[2, 1]
foreach循环可以访问多维数组中的所有元素
锯齿数组(每行的元素个数可能不同)(数组的数组):
(以二维数组为例)
声明方式 int [][] myArray;
初始化方式:
1) myArray = new int [2][];
myArray[0] = new int [3];
myArray[1] = new int [4];
2) myArray = new int [2][] {new int [3] {1, 2, 3}, new int [4] {2, 3, 4, 5}};
需要使用嵌套的foreach循环才能访问数据,如:
foreach (int [] var1 in myArray)
{
foreach (int var2 in var1)
{
}
}
函数(参数数组):
允许为函数(只能)指定一个特殊参数,此参数是函数定义中的最后一个参数,称为参数数组。使用params定义。
<returnType> <FunctionName> (<p1Type> <p1Name>, …… , params <type> [] <name>)
{
return <returnValue>;
}
参数数组在调用代码不必传递数组,而是传递同类型的几个参数(个数几乎不受限制),这些参数会被放在可在函数中使用的一个数组中。
函数(引用参数):
值参数,是在使用参数时,是把一个值传递给函数使用的一个变量。对函数中此变量的任何修改都不影响函数调用中指定的参数。
引用参数:即函数处理的变量与函数调用中使用的变量相同,对这个变量进行的任何改变都会影响用作参数的变量值。需使用ref关键字。
函数声明 <returnType> <FunctionName> (ref <type> <name>)
函数调用 <FunctionName> (ref <name>)
用作ref参数的变量必须是“非常量”变量,且必须是初始化过的变量。
函数(输出参数):
使用out关键字指定所给的参数是一个输出参数。在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。在函数声明和函数调用中的方式与引用参数一样。未赋值(未初始化)的参数可以用作out参数。
函数(结构函数):函数可以放在结构体中。
委托:
委托的声明类似于函数,但不带函数体,且要使用delegate关键字。用法举例:
(声明)delegate double ProcessDelegate(double p1, double p2);
(使用)ProcessDelegate process;(ProcessDelegate是委托名,可以任意取)
process = new ProcessDelegate(要使用的函数名); 或 process = 要使用的函数名;
process就可当作函数一样使用了。
委托可以作为参数传递给函数。
程序运行状态下的调试:
1. 在Output窗口输出调试信息。using System.Diagnostics;使用命令Debug.WriteLine()、Debug.Write()、Debug.WriteLineIf()、Debug.WriteIf()或Trace.WriteLine()、Trace.Write()、Trace.WriteLineIf()、Trace.WriteIf()。其中Trace命令可用于发布程序。
2. VS自带功能,使用跟踪点(tracepoint)。在目标代码行右键选择插入跟踪点,然后键入要输出的信息。VS菜单中Debug | Windows | Breakpoints显示断点的通用窗口。
异常:
try
{
}
catch (<exceptionType> e) 可以省略参数以此来响应所有异常
{
}
finally
{
}
可以有一个或多个catch块,如果没有catch块,就一定要有finally块。