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

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可变参数必须是形参列表中的最后一个元素。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值