.NET C# Web开发学习之路(15)—— 方法
文章目录
- 方法概述
- 方法修饰符
- 方法声明
- 方法分类
- 重载方法
方法概述
方法是一种用于实现可以由对象或类执行的计算或操作的成员。类的方法主要是和类相关联的动作,它是类的外部界面,对于那些私有字段来说,外部界面实现对它们的操作一般只能通过方法来实现。方法是包含一些列语句的代码块,在C#中每个执行命令都是在方法的上下文中完成的。
方法是C#中将一堆代码进行重用的一种机制。方法就是一段代码,这段代码坑能有输入的值,可能有返回值。一个方法就像一口锅,米和水就像参数,把米和水放进锅里,然后就能做好饭。方法就是需要我们给它一些参数,然后它可能会给我们一些返回值。
方法修饰符
修饰符 | 说明 |
---|---|
private | 私有访问是允许的最低访问级别,私有成员只有在声明它们的类和结构体中才可以访问 |
public | 公共访问是允许的最高访问级别,对访问公共成员没有限制 |
protected | 受保护的成员可以在它的类中访问和可由派生类访问 |
internal | 只有在同一程序集的文件中,内部类型或成员才是可访问的 |
partial | 在同一程序集中定义分部类和结构 |
new | 从基类成员隐藏继承的成员 |
static | 声明属于本身而不属于特定对象的成员 |
virtual | 在派生类中声明器实现可由重写成员更改防范的方法或访问器 |
override | 提供从基类继承的虚拟成员的新实现 |
sealed | 指定类不能被继承 |
abstract | 指定某个类只能是其他类的基类 |
extern | 指示在外部实现方法 |
声明方法时,需要遵循以下修饰符使用规则:
- 声明包含一个有效的访问修饰符组合
- 声明中所包含的修饰符彼此各不相同
- 声明最多包含static、virtual和override修饰符中的一个
- 声明最多包含new和override修饰符中的一个
- 如果声明包含abstract修饰符,则该声明不包含static、virtual、sealed或extern中的任何修饰符
- 如果声明中包含private修饰符,则该声明不包含virtual、override或abstract中的任何修饰符
- 如果声明包含sealed修饰符,则该声明还包含override修饰符
方法的声明
方法在类或结构中声明,需要制定访问级别、返回值、方法名称及方法参数。方法参数在括号中,并用逗号隔开;括号中没有内容表示法方法没有参数。
方法的返回类型指定了由该方法计算和返回的值的类型,如果该方法不返回值,则其返回类型为void。
一个方法的名称和形参列表定义了该方法的签名,即一个方法的签名由它的名称及其形参的个数、修饰符和类型组成。返回类型和形参的名称也不是方法签名的组成部分。
对于abstract和extern方法,方法主体只包含一个分好;对于其他方法,方法主体由一个块组成,该块指定了在调用方法时要执行的语句,
方法的名称必须与在同一个类中声明的所有其他非方法成员的名称都不相同。一个方法的签名必须与在同一个类中声明的其他所有方法的签名都不相同,并且在同一个类中声明的两个方法的签名不能只有ref和out不同。
public void method()
{
Console.WriteLine("方法声明");
}
方法分类
1、静态方法
静态方法不对特定实例进行操作,在静态方法中引用this会导致编译错误。允许在不创建类的实例的情况下,直接调用
public static int Add(int x,int y)
{
return x + y;
}
static void Main(string[] args)
{
Console.WriteLine("结果为:"+ Program.Add(3,5));
}
运行结果为:
结果为:8
2、非静态方法
非静态方法是对类的某个给定的实行进行操作,可以用this来方法该方法。需要创建类的实例,通过实例对象调用方法。
public int Add(int x,int y)
{
return x + y;
}
static void Main(string[] args)
{
Program pro = new Program();
Console.WriteLine("结果为:"+ Program.Add(6,5));
}
运行结果为:
结果为:10
重载方法
方法重载是指调用同一方法名,但各方法中参数的数据类型、个数、顺序不同,只要类中有两个以上的同名方法,但是使用的参数类型、个数、顺序不同,调用时编译器就可以判断在哪种情况下调用哪种方法。
public static int Add(int x,int y)
{
return x + y;
}
public static int Add(int x,double y)
{
return x + y;
}
public int Add(int x,int y,int z)
{
return x + y + z;
}
static void Main(string[] args)
{
Program pro = new Program();
int x = 3;
int y = 5;
int z = 7;
double y2 = 2.5;
//根据传入的参数类型及参数个数不同调用不同的Add重载方法
Console.WriteLine(x +"+" +y +"="+Program.Add(x,y));
Console.WriteLine(x +"+" +y2 +"="+Program.Add(x,y2));
Console.WriteLine(x +"+" +y +"+"+z+"="+Program.Add(x,y,z));
}
程序运行结果为:
3+5=8
3+2.5=5.5
3+5+7=15