c#之out参数使用
原创
©著作权归作者所有:来自51CTO博客作者Danna123的原创作品,请联系作者获取转载授权,否则将追究法律责任
问:什么时候使用到out参数?
答:如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。但是如果返回多个不同类型的值的时候,返回数组就不行了,那么我们我们可以考虑使用out参数。out参数就侧重于在一个方法中可以返回多个不同类型的值,当然它也可以返回多个相同类型的值。
///<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参数要求在方法的内部必须为其赋值 max = nums[0]; min = nums[0]; sum = 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;}
使用该方法,在main函数里面
int[] numbers = {1,2,3,4,5,6,7,8,9};int max = 0;int min = 0;int sum = 0;int avg = 0;Test(numbers,out max,out min, out sum, out avg);
调用时候起的名字,跟方法里面的名字不需要完全一样哦~比如这边可以改写成
int[] numbers = {1,2,3,4,5,6,7,8,9};int max1 = 0;int min1 = 0;int sum1 = 0;int avg1 = 0;Test(numbers,out max1,out min1, out sum1, out avg1);
这边其实还能不给它赋值,如下写法:
int[] numbers = {1,2,3,4,5,6,7,8,9};int max1;int min1;int sum1;int avg1;Test(numbers,out max1,out min1, out sum1, out avg1);
out参数一定一定要在内部返回值,否则报错。
来个小练习
static void Main(){ // 分别的提示用户输入用户名和密码 // 你写一个方法来判断用户输入的是否正确 // 返回给用户一个登录结果,并且还要单独的返回给用户一个登录信息 // 如果用户名错误,除了返回登录结果之外,还要返回一个"用户名错误" // "密码错误" Console.WriteLine("请输入用户名"); string userName = Console.ReadLine(); Console.WriteLine("请输入密码"); string userPwd = Console.ReadLine(); string msg; bool b = IsLogin(userName, userPwd, out msg); Console.WriteLine("登录结果{0}", b); Console.WriteLine("登录信息{0}", msg); Console.ReadKey();}
public static bool IsLogin(string name, string pwd, out string msg) { if (name =="admin" && pwd == "888888") { msg = "用户成功"; return true; } else if (name == "admin") { msg = "密码错误"; return false; } else if (pwd == "888888") { msg = "用户名错误"; return false; } else { msg = "未知错误"; return false; }}