1、函数的结构
访问修饰符 返回值类型 方法名(参数)
{
//方法主体
}
static void a()//函数头
{
//函数体
}
2、函数的命名规则
以动词开始,单词首字母大写,不要使用带下划线的字符
3、修饰符
(1)访问修饰符
public :公共类型,可被所属类的成员以及不属于类的成员访问
internal :内部类型,可被当前程序集访问
protected :保护类型,可被所属类或派生自所属类的类型访问
private :私有类型,仅所属类的成员才可以访问
默认的访问修饰符为private
(2)成员修饰符
abstract 定义抽象函数;
const 定义常量;
event 定义事件;
extern 告诉编译器在外部实现;
override 定义重载;
readonly 定义只读属性;
static 用来声明静态成员;
virtual 定义虚函数
4、返回值
(1)在函数声明中指定返回值的类型,但不使用关键字void。
(2)使用return关键字结束函数的执行,把返回值传给调用代码。
static double GetVal()
{
return 3.2;
}
5、参数
当函数接受参数时,就必须指定下述内容:
(1)函数在其定义中指定接受的参数列表,以及这些参数和类型。其中可以有任意多个参数,每个参数都有一个类型和一个名称。参数用逗号分隔开。每个参数都在函数的代码中用作一个变量。
(2)在每个函数调用中匹配的参数列表。在调用函数时,必须使参数与函数定义中指定的参数完全匹配,这意味着要匹配参数的类型、个数和顺序。
(3)函数的签名:函数的签名由函数的名称和参数定义。
static int Product(int a,int b)
{
return a+b;
}
6、可变参数
c#允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组。参数数组可以使用个数不定的参数调用函数,它可以使用params关键字来定义。参数是变化的以后你就可以不写那么多函数了,一个函数就可以做好多变化了
有两个限制
(1)这个参数数组只能是最后一个参数
(2)参数数组类型必须是一样的
7、值参数
把一个值传递给函数使用,函数中此变量的任何修改都不影响函数调用中制定的参数。
把值参数传入函数后,是把那个值的内容拷贝了一份传入函数的,如果在函数内部修改了这个参数的话,原先的参数值不会变
8、引用参数
函数处理的变量与函数调用中的使用的变量相同,而不仅仅是值相同的变量。因此对该变量进行的任何修改都会影响到用作参数的变量值,只需要用ref关键字指定其为引用参数。ref变量必须初始化过,而且不能为常量。
引用参数不用,它传递的的内存地址,也就是同一个东西,如果在函数内部多这个参数修改了,原先的值也会跟着变的
总结:
(1)值参数传递的是值的拷贝,引用参数传递的是值的内存地址
(2)要把值类型也传递地址的话,要使用ref ,out关键字,否则默认是传递的是值的拷贝
(3)对象类型,默认就是传地址,一个地方改了就都变了
9、ref ,out关键字的作用和区别
(1)使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。
(2)使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
(3)out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候
10、委托的概念
11、构造函数
(1)构造函数是类中的一种特殊方法,每次创建类的实例时,都会调用此方法。
(2)构造函数一般用来自动初始化成员变量,但也可以根据需要执行其他的动作。
(3)构造函数与类同名,不返回任何值。
访问修饰符 类名()
{
//构造函数的主体
}
(4)没有参数的构造函数为默认构造函数,这种构造函数不接受任何参数。
(5)如果类未定义默认构造函数,运行库将自动提供默认构造函数。
12、析构函数
析构函数是C#的另一种特殊方法,用语执行清楚操作。析构函数不接受任何参数,也不带任何访问修饰符,析构函数主体包括的一些代码通常用于关闭有实例打开的数据库、文件或网络连接等。析构函数在释放对象时被调用,用来在删除对象前做一些清理工作。
注意:
一个类只能有一个析构函数。
析构函数不能重载。
析构函数不能显示或手动调用,只能有垃圾回收器自动调用。
13、调用方法
调用c#方法首先要创建对象实例,在用成员访问运算符点来调用方法。
如:对象名.方法名([参数列表]);
14、方法重载
(1)方法共用一个名称但对不同数据执行相似的功能,这种概念称为方法重载,不同的方法根据方法签名来识别,方法签名包括对方法的声明。每个重载方法的方法签名都应该是唯一的。
(2)可根据不同数量的参数来重载方法,每个被重载的方法都有不同的参数
(3)可根据不同类型的参数来重载方法,参数的数量保持不变。
15、静态方法
(1)静态方法就是一个类的所有实例共享的方法
语法:
(2)访问修饰符 static 返回值类型 方法名(参数列表)
说明:访问静态方法的时候不需要创建类的实例,采取“类名.方法名”即可,Console.Write()就是Console类的一个静态方法。