您的位置:首页 > 编程语言 > C#

C#基础知识(七)——方法重载与out、ref、params参数

2016-07-24 21:40 645 查看
1、方法重载:

方法名相同,但是参数不同,参数的个数不同,类型也不同。方法的重载和返回值无关,和参数的类型和个数有关。

规则:如果参数个数不同,就不管它的参数类型了;如果参数个数相同,那么参数的类型必须不同。

例子:

<span style="font-family:SimSun;">//求两个数的和、最大值、最小值
static void Main(string[] args)
{
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] arrayNumbers = ArraySumAndMaxOrMin(nums);

Console.WriteLine("最大值为{0}", arrayNumbers[0]);
Console.WriteLine("最小值为{0}", arrayNumbers[1]);
Console.WriteLine("和为{0}", arrayNumbers[2]);
Console.ReadKey();
}
public static int[] ArraySumAndMaxOrMin(int[] numbers)
{
int[] array = new int[3];
array[0] = int.MinValue;
array[1] = int.MaxValue;
array[2] = 0;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] > array[0])
{
array[0] = numbers[i];
}
if (numbers[i] < array[1])
{
array[1] = numbers[i];
}
array[2] += numbers[i];
}
return array;
}</span>

2、方法的out参数和ref参数

(1)out参数:

out是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。

注意:如果方法的参数用out修饰了,那么在方法外面可以不给这个参数赋值,但是在方法里面必须给这个参数进行赋初值。另外,参数加out,是把这个方法中的参数的值传到方法外面去了。

例子:

<span style="font-family:SimSun;">//显示num1值,num2值,numSum的值
static void Main(string[] args)
{
int num1;
int num2 = 80;
int numSum = Show(out num1, num2);
//如果方法的参数用out修饰了,那么在方法外面可以不给这个参数赋值,但是在方法里面必须给这个参数进行赋初值。
//另外,参数加out,是把这个方法中的参数的值传到方法外面去了。<span style="font-size:18px;"></span>
Console.WriteLine(num1);//90
Console.WriteLine(num2);//80
Console.WriteLine(numSum);//100
Console.ReadKey();
}
public static int Show(out int number1,int number2)
{
number1=90;
return number1+10;
}</span>
(2)ref参数:

ref用的时候必须给这个变量赋初值,和out有区别。out可以把方法里的值传出去;ref可以把值传到方法里,又可以把值传到方法外面。

例子:

<span style="font-family:SimSun;">//
static void Main(string[] args)
{
int number1 = 10;
int number2 = 20;
int sum = show(ref number1, ref number2);
Console.WriteLine("{0},{1},{2}",number1,number2,sum);//100,200,300
Console.ReadKey();
}
public static int show(ref int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;</span>
(3)params参数:

用处:可以让在方法里放很多参数。

例子:

class Program
{
public static void Show(string str,params object[]strs)
{

}
static void Main(string[] args)
{
Console.WriteLine("{0}{1}{2}{3}{4}{5}{6}{7}",1,2,3,4,5,6,7,8);
Show("{0}{1}{2}{3}{4}{5}{6}{7}{8}",1,"2",3,4,5,6,7,8,9);
}
}


比较:

out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。params可变参数必须是形参列表中的最后一个元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: