out ref params

out的使用

out 能够使我们的函数返回多个类型的值,不再受返回类型的设置

就是相当于在方法里不仅仅给了一个返回值,被out修饰的参数的值也能带出去;

所以就是说,在方法体内被out修饰的参数,都可以在主函数内获取值来用。大致就是这样

————————————————————————————————————————————————— 

 在这里面被修饰的参数是msg,而且在方法体内部,对不同情况msg有不同的值;

所以在主函数内,我们就看到,msg被定义了一下,但是,msg的值还是方法体内的值。

 1   class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5           
 6             Console.WriteLine("请输入一个用户名");
 7             string name = Console.ReadLine();
 8             Console.WriteLine("请输入一个密码");
 9             string pwd = Console.ReadLine();
10             string msg;
11             bool b = login(name, pwd, out msg);
12             Console.WriteLine("登陆结果{0}",b);
13             Console.WriteLine("登陆信息{0}",msg);
14             Console.ReadKey();
15             
16         }
17         //方法的作用就是:先定义好要实现一个什么功能的公式,然后在主函数里代入数据再代用方法,
18         //第一步先在形参中写上out等要多余返回的参数
19         //out参数
20       
21        
22         //分别提示用户输入用户名和密码
23         //写一个方法来判断用户名和输入的是否正确
24         //返回给用户一个登陆结果,并且单独返回给用户一个登录信息
25         //如果用户名错误,除了返回登陆结果之外,还要返回一个“用户名错误”
26         public static bool login(string name,string pwd,out string msg)
27         {
28             //就作用户名和密码能不能匹配正确和返回相应的信息
29             if (name == "lisi" && pwd == "123")
30             {
31                 msg = "登陆成功";
32                 return true;
33             }
34             if (name == "lisi")
35             {
36                 msg = "密码错误";
37                 return false;
38             }
39             if (pwd == "123")
40             {
41                 msg = "用户名错误";
42                 return false;
43             }
44             else
45             {
46                 msg = "未知错误";
47                 return false;
48             }
49 
50          }
51     }
View Code
1  int numm;//这个trypase自带out返回参数的类型,F12可以进去看看他的定义
2             bool num = int.TryParse(null, out numm);
3           //  bool num = int.TryParse("1212", out numm);
4             Console.WriteLine(num);
5             Console.WriteLine(numm);
6             Console.ReadKey();
View Code

 

—————————————————————————————————————————————————

 ref的使用

—————————————————————————————————————————————————

 

//ref 就是讲一个变量作为参数带入到一个方法中进行改变,deng这个值改变后再将改变后的值
//带回来。注意:无论方法有没有返回值,会将参数的值改变。只要参数被ref改变啦

//这个方法就没有返回值return等词,照样可以将主函数内的改变掉
//反正,我认为ref就是你在方法没有return 的时候参数只要被ref修饰,参数就会改变

其他的没啥用

—————————————————————————————————————————————————

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ref参数
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             //double money = 5000;
14             ////double b= jiangjin(money);
15             //jiangjin(ref money);
16             //Console.WriteLine(money);
17             //Console.ReadKey();
18             int n1 = 10;
19             int n2 = 20;
20             //引入第三者进行转换
21             //int temp = n1;
22             //n1 = n2;
23             //n2 = temp;
24 
25             //不用第三者
26             //n1 = n1 - n2;//n1:-10  n2: 20
27             //n2=n1+n2;//n2:10 n1;-10
28             //n1=n2-n1;//n1:20 n2:10
29             change(ref n1,ref n2);
30             Console.WriteLine(n1);
31             Console.WriteLine(n2);
32 
33             string name = "zkb";
34             tom(ref name);
35             Console.ReadKey();
36         }
37         //ref 就是讲一个变量作为参数带入到一个方法中进行改变,deng这个值改变后再将改变后的值
38         //带回来。注意:无论方法有没有返回值,会将参数的值改变。只要参数被ref改变啦
39         public static void jiangjin(ref double s)
40         {
41             //s = s + 500;
42             // return 在加ref之前,是无返回值的方法,还没有写return 是有错误的,加上ref之后,在主函数中方法后面的参数+ref就可以啦
43             //ref就是方法不加return 不改变方法的类型
44         }
45         //这个方法就没有返回值return等词,照样可以将主函数内的改变掉
46         //反正,我认为ref就是你在方法没有return 的时候参数只要被ref修饰,参数就会改变
47         public static void change(ref int s1,ref int s2)
48         {
49             int temp = s1;
50             s1 = s2;
51             s2 = temp;
52         }
53 
54         public static void tom(ref string name)
55         {
56            Console.WriteLine(  name = name + "ojbk");
57         }
58     }
59 }
View Code

------------------------------------------------------------------------------------------------------------------------

关于params的知识

//应该就是被params修饰的参数来说,params的内容就可以随意更改但是类型要一致。
//看例子2:test的里面的int数组,被params修饰,自己可以随意添加整型的数是多少。不再固定。
//值得一提的是:但是这个要放在方法的最后面

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace params可变参数
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             //int[] num = {66,99,55,44, };
14             //Test("老王",num);
15             //Test("老王",55,55,55,9999); //从方法哪里的参数可以知道,老王后面应该是数组,但是数组的内容一旦确定就不能修改了
16            // 但是要想改变数组的内容,要在方法里加上一个params可变参数(但是可变内容的类型要与数组类型相同),但是这个要放在方法的最后面,
17             //应该就是被params修饰的参数来说,params的内容就可以随意更改但是类型要一致。
18             //看例子2:test的里面的int数组,被params修饰,自己可以随意添加整型的数是多少。不再固定。
19             //值得一提的是:但是这个要放在方法的最后面
20            //  例如要添加一个学号
21             //Console.ReadKey();
22             int b = Sum(56, 56, 56, 56,45);//这里的Sum方法里面的参数被params修饰,那么,里面的数可以随意增减,但必须得是整形
23             Console.WriteLine(b);
24             Console.ReadKey();
25         }
26         public static void Test(string name, params int[] score)
27         {
28             int sum = 0;
29 
30             for (int i = 0; i < score.Length; i++)
31             {
32                 sum += score[i];
33             }
34             Console.WriteLine("我叫{0},我这次的总成绩{1}", name, sum);
35 
36         }
37          public static int Sum(params int[] sum)
38             {
39                 int a = 0;
40                 for (int i = 0; i < sum.Length; i++)
41                 {
42                     a+=sum[i];
43                 }
44                 return a;
45                 //Console.WriteLine();
46 
47             }
48     }
49 }
View Code

Coding Change The  World  Coding Change The  World   Coding Change The  World  Coding Change The  World Coding Change The  World

总而言之:

out 将方法内的被修饰参数值带出去

ref   将带进入到方法里的值改变后再带出去,无视return的存在

params 主函数内可以对被修饰的参数进行毫无人道的增减

转载于:https://www.cnblogs.com/ZkbFighting/p/7994583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值