方法重载是让类以统一的方式处理不同类型数据的一种手段。在C#中,语法规定同一个类中两个或两个以上的方法可以用同一个名字,如果出现这种情况,那么该方法就被称为重载方法.当一个重载方法被调用时,C#回根据调用该方法的参数自动调用具体的方法来执行.
什么是方法重载?在面对对象这样的高级语言中都允许我们在一个类中定义多个方法名相同、方法间参数个数和参数顺序不同的方法,对于参数个数不同或者参数列表不同的情况我们称之为参数列表不同。需要注意的是这里没有提到方法的返回值。也就是决定方法是否构成重载有以下几个条件:
◆ 在同一个类中;
◆ 方法名相同;
◆ 参数列表不同。
在方法的重载中,显式优先匹配调用方法是给定的参数个数相同的方法
ref和out不能作为重载的依据,需要使用时只能选其一,不能两个同时使用
如果参数被ref或out修饰,则参数必须是变量
方法的返回值不构成重载的条件。
方法的参数个数不同可以构成重载,当方法的参数个数相同是参数的类型不同也可以构成重载。
使用数组类型作为方法的参数:关键字params只能出现一次而且是出现在参数中的最后一个
例:
public void Paint(int num, params string[] str)
{
}
例1:
class Heavy
{
static void Main(string[] args)
{
Heavy hay = new Heavy();
hay.Print();
hay.Print(123);
hay.Print(12345);
hay.Print(123, "steven");
hay.Print(123, "a", "b", "c");
Console.Read();
}
public void Print()
{
Console.WriteLine("方法执行 无参 ");
}
public void Print(int num)
{
Console.WriteLine("方法执行 整型参数");
Console.WriteLine(num);
}
public void Print(ref int num)
{
Console.WriteLine("方法执行 ref 整型参数");
num = num * 1000;
Console.WriteLine(num);
}
//ref和out不能作为重载的依据,需要使用时只能选其一,不能两个同时使用
//public void Print(out int A)
//{
// Console.WriteLine("方法执行 out 整型参数");
// num = num * 1000;
// Console.WriteLine(num);
//}
public void Print(int num, string str)
{
Console.WriteLine("方法执行 整型参数+字符串");
Console.WriteLine(num);
}
//使用数组类型作为方法的参数:关键字params只能出现一次而且是出现在参数中的最后一个
public void Print(int num, params string[] str)
{
Console.WriteLine("方法执行 整型参数 + 数组类型");
Console.WriteLine(num);
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i]);
}
}
}
|