一、C#中的函数成员分类
- 方法(Methods):方法是定义在类中的一段可重复使用的代码块,用来执行特定的任务。方法可以包含参数、返回类型,也可以被重载(overload)。
- 属性(Properties):属性用于封装类的字段,通过属性可以控制字段的访问和修改。属性本质上是一种特殊的方法,包括读取器(get accessor)和写入器(set accessor)。
- 索引器(Indexers):索引器允许类的对象通过类似数组的下标来访问其元素。索引器也是一种特殊的属性。
- 构造函数(Constructors):构造函数用于初始化对象的实例,并在对象创建时自动调用。构造函数通常与类的实例化过程相关联。
- 析构函数(Destructors):析构函数用于对象的资源清理和释放,在对象被销毁时自动调用。C#中的析构函数使用 ~ 符号定义。
- 扩展方法(Extension Methods):扩展方法是一种特殊的静态方法,用于为已有的类型(包括.NET 框架中的类型)添加额外的方法。扩展方法的定义需要在静态类中,且参数中必须有 this 修饰符。
二、C#中函数的构成要素
- 访问修饰符:访问修饰符指定了函数的访问权限,控制着函数可以被哪些其他部分访问。常见的访问修饰符包括pubilc,private,protected,intenal等。
- 返回类型:函数可以指定一个返回值的类型,表示函数执行完毕后将返回的数据类型。如果函数不返回任何值,可以使用 void关键字表示。
- 函数名:函数名用来标识函数的名称,供其他部分调用函数时使用。
- 参数列表:参数列表包含函数接收的输入参数,用于函数执行时传递数据。每个参数包括参数类型和参数名称。
- 方法体:方法体包含了函数的实际操作代码,即执行特定任务的代码块。方法体由大括号 {} 包围,内部包含函数的逻辑和功能实现。
三、C#中函数的参数类型
- 值类型参数:这类参数会传递参数的实际值给函数。基本数据类型(如 int、float、bool 等)和结构体都属于值类型。当函数对参数进行修改时,不会影响传入的实际参数。
- 引用类型参数:这类参数传递的是引用,即传递参数的内存地址。引用类型包括类实例、数组、字符串等。当函数修改引用类型参数时,会影响传入参数的实际值。
- 输出参数:输出参数用于从函数中返回多个值。输出参数必须在函数中单独声明,并且在函数中必须为其赋值。调用该函数时,传递的参数必须是变量,而不是常量。关键字out
- 可选参数和命名参数:可选参数允许在调用函数时不传递某些参数,函数会使用默认值。命名参数允许在调用函数时按照参数名称指定传递的值。通常情况下,函数参数传递使用位置参数。
- 参数数组:参数数组允许在函数定义时指定传递可变数量的参数。这种参数必须放在参数列表的末尾,只能有一个这样的参数。关键字params
- 扩展方法参数:扩展方法的第一个参数是带有 this 修饰符的参数,用于指定被扩展的类型。
四、C#中的访问修饰符
访问修饰符用于控制类、字段、属性、方法等成员的访问权限。
访问修饰符 | 作用范围 | 说明 |
public | 所有类型或成员 | 可以在类内部,外部及其它程序集访问 |
private | 类型和内嵌类型的所有成员 | 只能在所属类的内部访问 |
protected | 类型和内嵌类型的所有成 | 只能在派生类和类内部访问 |
intenal | 所有类型或成员 | 程序集内的任何类中访问,程序集外无法访问 |
protected intenal | 类型和内嵌类型的所有成员 | 程序集内的任何类以及派生类中访问 |