out、ref和params参数

1)out参数

如果在一个方法中,返回多个相同类型的值的时候,可以用一个数组,如果返回多个不同类型的值的时候,返回数组就不行了,这时候可以用out参数,out参数侧重于在一个方法中返回多个不同类型的值或者多个相同类型的值。一句话:out参数可以一次返回多个不同类型的值。

2)ref参数
能将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法用ref的好处是不用再写返回值ref参数要求在方法外必须赋值,而方法内可以不赋值。

3)params可变参数
将实参列表中跟可变参数数组类型一致时的元素都当成数组的元素处。一句话:原本要传入数组参数的改为传入单个元素,然后在方法接收参数时加上params参数,可将所有类型一致的元素处理为一个数组。

下面通过例子演示三个参数的使用方法

一、out参数演示

class Program
    {
        static void Main(string[] args)
        {
            int[] nums = { 15, 21, 23, 12, 18 };
            int max;
            outTest(nums, out max);
            Console.WriteLine("数组最大值是{0}", max);
            Console.ReadKey();
        }
        static void outTest(int[] nums, out int max)
        {
            max = nums[0];
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                {
                    max = nums[i];
                }
            }
        }
    }

注:
1.主函数必须先声明相应的变量(可以不赋初值)。
2.方法体内必须对加有out参数的变量赋初值。这样方法在执行完之后,带有out参数的变量值自动会影响主函数相应变量的值。

二、ref参数演示

class Program
    {
        static void Main(string[] args)
        {
            int[] nums = { 15, 21, 23, 12, 18 };
            int max = 0;
            outTest(nums, ref max);
            Console.WriteLine("数组最大值是{0}", max);
            Console.ReadKey();
        }
        static void outTest(int[] nums, ref int max)
        {
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                {
                    max = nums[i];
                }
            }
        }
    }

注:
1.与上面out参数的使用目的一样,都是用于不写返回值类型也可以自动返回需要的值。
2.ref与out使用方式不同之处:指定ref的变量需要在声明时就赋初值,而在方法内不需要赋初值。指定out的变量在声明时不需要赋初值,但在方法内部需要先赋初值。

三、params参数演示

class Program
    {
        static void Main(string[] args)
        {
            string name = "李显堂";
            Sum(name, 56, 78, 67, 69, 21);
            Console.ReadKey();
        }
        public static void Sum(string name, params int[] nums)
        {
            int sum = 0;//统计总成绩的变量
            for (int i = 0; i < nums.Length; i++)
            {
                sum += nums[i];
            }
            Console.WriteLine("{0}这次总成绩为{1}", name, sum);
        }
    }

注:
1.params参数用来标记数组,并且params标记的参数通常必须在方法的末尾。
2.调用方法时,数组参数可以分别以成员形式以逗号分开传入,最终在方法内识别为同一个数组。如上面例子中,调用Sum()方法时,从数字56开始到后面的所有数字,会在Sum()方法内被nums数组接收。

 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#,func是一个泛型委托类型,可以用来定义带有特定参数返回类型方法委托。在引用的代码示例,func是一个Func<string, ActionResult>类型的委托,它接受一个string类型参数,并返回一个ActionResult类型的结果。这意味着可以将一个满足这个签名的方法作为参数传递给func,并且调用该委托的Invoke方法执行方法委托。在引用的示例,func实际上是一个匿名方法或lambda表达式(即用于传递给func的方法),它接受一个string类型参数p,并返回一个ActionResult类型的结果。所以,在代码调用func("")将执行这个匿名方法或lambda表达式,并返回一个ActionResult类型的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C# 泛型参数转换](https://download.csdn.net/download/weixin_38681736/13784039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C#之Action/Func/out/ref/params/类型参数约束](https://blog.csdn.net/husheng0/article/details/51174571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [[c# ] 委托](https://blog.csdn.net/futurismme/article/details/119050439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值