C#基础-out,ref,params
2021/9/11 11:05:17
本文主要是介绍C#基础-out,ref,params,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
out
再说out参数之前先做个练习题
Q1:写一个方法 求一个数组中的最大值,最小值,总和,平均值?
(先用传统方法返回一个数组来装这四个值 然后再使用out参数做对比)
static void Main(string[] args) { int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] res = GetMaxMinSumAvg(nums); Console.WriteLine("最大值{0},最小值{1},总和{2},平均值{3}", res[0], res[1], res[2], res[3]); Console.ReadKey(); } public static int[] GetMaxMinSumAvg(int[] nums) { int[] res = new int[4]; res[0] = nums[0];//假设最大值 依次给数组赋值 res[1] = nums[0];//假设最小值 res[2] = nums[0];//假设总和 for (int i = 0; i < nums.Length; i++) { if (nums[i] > res[0]) { res[0] = nums[i]; } if (nums[i] < res[1]) { res[1] = nums[i]; } res[2] += nums[i]; } res[3] = res[2] / res.Length; return res; }
但这种只能返回同一个类型多个数组的值,如果想返回多个不同类型的多个值时 此时数组是不成立的
因此我们这时就使用out参数,可以多余返回不同类型的参数
static void Main(string[] args) { //写一个方法,求一个数组中的最大值,最小值,总合,平均值 int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int max; int min; int sum; int avg; GetMaxMinSumAvg(nums,out max,out min,out sum,out avg); Console.WriteLine("最大值{0},最小值{1},总和{2},平均值{3}",max, min,sum,avg); Console.ReadKey(); } public static void GetMaxMinSumAvg(int[] nums,out int max,out int min,out int sum,out int avg) { max = nums[0]; min = nums[0]; sum = 0; avg = 0; for (int i = 0; i < nums.Length; i++) { if (nums[i]>max) { max = nums[i]; } if (nums[i]<min) { min = nums[i]; } sum += nums[i]; } avg = sum / nums.Length; }
结果都是
ref
ref就是将这两个值在方法内进行改变,改变后再将值带出去
Q1:用一个方法来交换方法内的两个变量的值?
static void Main(string[] args) { //用一个方法来交换方法内的两个变量的值 int n1 = 10; int n2 = 20; Test(ref n1,ref n2);//ref就是将这两个值在方法内进行改变,改变后再将值带出去 ,然而必须在方法内进行赋值,因为你要有值可以改变 Console.WriteLine("n1的值{0},n2的值{1}",n1,n2); Console.ReadKey(); } public static void Test(ref int n1,ref int n2) { int temp = n1 ; n1 = n2; n2 = temp; }
结果是
params
params可变参数:将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理
params可变参数必须是形参列表中的最后一个元素
Q1:用一个方法求张三的总成绩?
static void Main(string[] args) { //用一个方法求张三的总成绩 Test("张三", 99, 88, 77); Console.ReadKey(); } public static void Test(string name, params int[] score) { int sum = 0; for (int i = 0; i < score.Length; i++) { sum += score[i]; } Console.WriteLine("{0}这次考试的总成绩是{1}", name, sum); }
结果是
这篇关于C#基础-out,ref,params的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID