ref out params

Posted 王炜忠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ref out params相关的知识,希望对你有一定的参考价值。

ref侧重于将一个值传入函数进行处理,再将处理后的值返还回去;参数是在函数外进行赋值。--将值类型传递转换成引用类型传递

out侧重于函数需要返回多个值;参数是在函数内进行赋值,函数外只进行声明数据类型。

params可变参数

out实例:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Diagnostics;
 4 using System.IO;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 
 9 namespace ConsoleApplication4
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             Console.WriteLine("请输入账号");
16             string uname = Console.ReadLine();
17             Console.WriteLine("请输入密码");
18             string upwd = Console.ReadLine();
19             string uresult = string.Empty;//只声明数据类型,只要保证“形参”里面是该变量名,系统会自动赋值
20             bool a = login(uname,upwd, out uresult);//注意out
21             Console.WriteLine("登录状态为{0},因为{1}",a.ToString(),uresult);
22             Console.ReadKey();
23         }
24         //根据账号密码登录返回不一样的提示。注意此处是静态函数
25         static bool login(string name, string pwd, out string result)//返回bool和out内的string类型
26         {
27 
28             bool b;
29             if (name == "admin" && pwd == "123")
30             {
31                 result = "登陆成功";
32                 b = true;
33             }
34             else if (name == "123")
35             {
36                 result = "密码不对";
37                 b = false;
38             }
39             else if (pwd == "123")
40             {
41                 result = "账号不对";
42                 b = false;
43             }
44             else
45             {
46                 result = "账户密码不对";
47                 b = false;
48             }
49             return b;
50 
51         }
52     }
53 }
View Code

ref实例:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Diagnostics;
 4 using System.IO;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 
 9 namespace ConsoleApplication4
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             int a = 100;
16             bian1(a);
17             Console.WriteLine(a);//此时a为100
18 
19             int b = 100;
20             bian2(ref b);//必须有ref,关键字
21             Console.WriteLine(b);//此处b为300。ref将b进行处理,然后在返还回来
22 
23             int c = 100;
24             int cc = bian3(ref c);
25             Console.WriteLine(cc);//cc为500
26             Console.WriteLine(c);//c为400
27 
28             Console.ReadKey();
29         }
30         static void bian1(int aa)//普通函数
31         {
32             aa = 200;
33         }
34         static void bian2(ref int aa)//注意ref,同是函数还有返回值
35         {
36             aa = 300;
37         }
38         static int bian3(ref int aa)
39         {
40             aa = 400;//只对声明的ref变量进行处理后再返还回去
41             return 500;//跟ref aa变量没关系
42         }
43     }
44 }
View Code

params实例:

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Diagnostics;
 4 using System.IO;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 
 9 namespace ConsoleApplication4
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             //params可变参数,可以放数组,也可以放跟数组数据类型一样的数值,但是params必须设置在最后一个参数位置,因为如果不在最后,系统对应不到相应的参数
16             aa("name", new int[] { 1, 2, 3, 4 });
17             aa("name",1,2,3,4);//两种方法都可以,但是
18         }
19         static void aa(string name,params int[] aa)//声明一个函数,
20         {
21             Console.WriteLine("aa");
22         }
23        
24     }
25 }
View Code

完!

 

以上是关于ref out params的主要内容,如果未能解决你的问题,请参考以下文章

out 和 ref + params 的理解

ref out params

ref 和 out 的用法和区别以及params用法

out ref params 的使用

csharp Out Ref Params

out ref 和 params 的区别和用法