0
点赞
收藏
分享

微信扫一扫

C#---第七课:方法的几个特性:方法的重载、out、ref、params

文章目录



1.方法的重载

方法的重载:一个方法可以有多个场景的应用。相当于一个方法名,但是有多个方法合并到一起的。


1).方法重载基本使用


using System;

namespace first_space
{
    class CommonClass
    {

        static void Main()
        {
            //int sum = Special(1, 2);					// 当传递两个int时,函数支持
            string sum = Special("hello","_alien");		// 当传递两个string时,函数也支持
            Console.WriteLine("计算的结果为:{0}", sum);
            Console.ReadKey();
        }


        public static int Special(int a, int b)			// Special这个方法,可以传递两个int参数
        {
            int sum;
            sum = a + b;
            return sum;
        }

        public static string Special(string a, string b)// Special这个方法,可以传递两个string参数
        {
            string sum;

            sum = a + b;
            return sum;
        }
    }
}



2).方法重载的判断

在这里插入图片描述

【1情况:】


【2情况:】


【3情况:】


【4情况:】



2.方法中的参数:out

out参数:在方法中,有时候我们希望返回的是多个参数,而且又包含多个不同的数据类型。如果通过原始的public static int Func(int a, int b) 这种方式定义方法,则方法名前面的int不能代表各个返回值的类型。



using System;

namespace out参数
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8 };
            int max = 0;
            int min = 0;
            int sum = 0;
            int avg = 0;
            bool b;
            string s;
            
            // 传递的形参如果有out,代表默认要返回的值
            // 此处虽然把max传递给方法,但代表test对max本身操作,而不是max的值操作!!!
            test(numbers, out max, out min, out sum, out avg, out b, out s);	
            Console.WriteLine(max);		
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.WriteLine(avg);
        }
        /// <summary>
        /// 计算一个数组的最大值,最小值,总和,平均值
        /// </summary>
        /// <param name="nums">要计算的数组</param>
        /// <param name="max">多余返回的最大值</param>
        /// <param name="min"></param>
        /// <param name="sum"></param>
        /// <param name="avg"></param>
        public static void test(int[] nums, out int max, out int min, out int sum, out int avg, out bool b, out string s)
        {
            //out参数在方法内部必须为其赋值
            max = nums[0];
            min = nums[1];
            sum = 0;
            avg = 0;
            b = true;
            s = "qwe";
            for (int i = 0; i < nums.Length; i++)
            {
                if (max <= nums[i])
                {
                    max = nums[i];
                }
                if (min > nums[i])
                {
                    min = nums[i];
                }
                sum += nums[i];
            }
            avg = sum / nums.Length;

        }
    }
}






3.方法中的参数:ref

ref参数:在方法中,有时候我们将变量传递给方法,虽然只是将变量的值传递过去了。但是,有时候我们也希望将原始的变量也一起跟着改变。形参前加 ref ,代表将这个变量本身传递给方法去操作

// 未使用ref效果

int number = 10;

int n = Modify(number);
Console.WriteLine("n的值为:{0}",n);
Console.WriteLine("number的值为:{0}",number);
Console.ReadKey(true);


static int Modify(int n)
{
    n += 1;
    return n;
}


// n的值为:11
// number的值为:10


// 使用ref效果

int number = 10;

int n = Modify(ref number);			// 注意,在调用方法的时候,需要将参数前面加ref ,与方法的形参保持一致!!!
Console.WriteLine("n的值为:{0}",n);
Console.WriteLine("number的值为:{0}",number);
Console.ReadKey(true);


static int Modify(ref int n)
{
    n += 1;
    return n;
}


// n的值为:11
// number的值为:11



4.方法中的参数:params

params参数:有时候,需要传递给方法多个相同类型的参数,但又不想写死具体几个参数,则可以使用parmas设定形参。


int n = Modify(666, 1, 3, 5);			// 将666传递给了形参id,其余的数字传递给了数组n
Console.WriteLine("n的值为:{0}",n);
Console.ReadKey(true);

static int Modify(int id, params int[] n)	// parmas修饰的参数n,在最后一个
{
    int num = 0;
    for(int i = 0; i < n.Length; i++)
    {
        num += n[i];
    }
    Console.WriteLine("id的值为:{0}", id);
    return num;
}

举报

相关推荐

0 条评论