首页 > 代码库 > C#语法复习2

C#语法复习2

第五章 方法

1、方法是一块具有名称的代码

包括:方法体、方法头

局部变量必须被赋值才可以执行下面的操作。实例变量有隐式初始化。有时候,类型推断可以用var关键字,类似于C++当中的auto。用于局部变量。

C#中,不能在第一个名称的有效范围内去声明另一个同名的本地变量。

2、本地常量:局部常量。Const 关键字。Const double PI = 3.1415926; 在编译期决定其值。

3、 参数:形参与实参。参数也有几种:值参数/引用参数。

值类型与值参数是两种不同的概念:值类型就是类型本身包含其值。而值参数是把实参的值复制给形参。

Void mymethod(myclass f1, int f2)

{

F1.val += 5;

F2+= 5;

}

调用: mymethod(a1,a2);

执行过程:

方法开始时,系统在栈中为形参分配空间,并从实参复制值。a1为引用类型,所以引用被复制,但指向相同。

在使用引用参数时,必须加关键字 ref。 void method(ref int val){ xxxx }, 方法调用 method(ref y);//必须使用变量。

举例:

Void mymethod(ref myclass f1,ref int f2)

{

F1.val += 5;

F2+= 5;

}

调用: mymethod(ref a1,ref a2);

执行过程:不会开辟新的内存单元,只是把形参名设置为实参的别名而已。a1与f1,引用相同的位置。

引用类型作为值参数和引用参数:

我们修改引用参数的成员时,无论是作为值参数还是引用参数,效果都一样。但,当我们去修改引用类型本身时,那么其作为值参数与引用参数是不同的。

请看下面的图形:

4、输出参数

需要加关键字 out

Void mythod(out int val); //形参也是实参的别名,且我们通过方法体之后就会知道你传入的实参的值。方法体内部会对实参赋值。

5、参数数组

前面是一个实参对应一个形参,现在是多个实参对应一个特殊的形参。

关键字:params 比如 void mythod(params int[] vals){ }

调用: int[] arrays = {1, 2 ,3}; mythod(arrays);

调用时,如果是用值类型传递,即实参是值,数组参数是值类型,实参不受影响。

如果是引用类型传递,即实参是数组名,数组参数是引用类型,实参受方法内部影响。

6、方法重载

方法名称相同,方法特征不同即可。

7、命名参数

给参数命名,这样我们可以以任意顺序调用。

Void mythod(int a, int b, int c);

参数的名字和值: 调用时指定名称和值即可。 Mythod(c:2, a:4, b: 1);

8、可选参数

就是我们在调用时,可以调用这个参数,也可以省略这个参数。这时,必须在声明的时候给参数提供默认值。

Void mythod(int a, int b, int c = 2);

先是必填参数+ 可选参数+ params 参数。

9、栈帧:就是一个个方法进栈。

C#语法复习2