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 }

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 }

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 }

完!

时间: 2024-12-15 01:49:23

ref out params的相关文章

C# 中out,ref,params参数的使用

C#中有三个高级参数,分别是out,ref,params: 1.out参数 方法使用return 只能返回一个值(一个数值或一个指针值),out参数可以帮助我们在一个方法中返回多个值,不限类型. 在使用out参数的时候需要注意: 在调用方法之前,对out参数传递的变量只需声明,可以赋值也可以不赋值,赋值也会在方法中被覆盖掉. 方法使用了out参数传递变量时,就是要返回值,所以必须在方法内为其赋值. 方法的参数使用out关键字修饰时,在调用该方法时,也要在out参数传递的变量前面加上out关键字才

C#中的out、ref、params详解

out参数: 如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组.但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数.out参数就侧重于在一个方法中可以返回多个不同类型的值. ref参数: 能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法.ref参数要求在方法外必须为其赋值,而方法内可以不赋值. params可变参数: 将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理.Params可变参数必须是

2014.8.30.ref,out,params,enum,递归

(一)ref 函数形参变量的输入有两种方式:传值,传址.而ref则为传址.eg: 1 static int Add(ref int n) 2 { 3 Console.WriteLine("Add----1:{0}",n); 4 n = n + 10; 5 Console.WriteLine("Add----2:{0}",n); 6 return n; 7 } 8 static void Main(string[] args) 9 { 10 int a = 5; 11

C#方法中三个重要的参数:out、ref、params

备注:适用于初学者,自学于传智播客. 1.out参数. 概念:如果在一个方法中,返回多个相同类型值的时候,可以考虑返回一数组.但是返回多个不同类型值的时候,返回数组显然不能解决问题,这时就引入out参数.out参数侧重于在一个方法中可以返回多个不同类型的值. 代码举例: 用户登陆: main:Test(numbers, out max1, out min1, out sum1, out avg1, out b, out s, out d); 方法:public static void Test(

C#方法的参数 Ref Out Params 4种类型的参数

转载:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072815.html 一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传递到方法,也就是我们通常说的按值传递. 方法被调用时,CLR做如下操作: 1.在托管堆栈中为形参分配空间: 2.将实参的值复制到形参. 这个太常用了,按值传递参数,是复制一份,因此不影响原来参数的值. public class Program { static void Main(string[]

C# 中 ref,out, params 解析

方法的参数传递有四种类型:传值(by value),传址(by reference),输出参数(by output ),数组参数(by array). 传值参数无须额外的修饰符,传址参数需要修饰符ref,输出参数需要修饰符out,数组参数需要修饰符params. 例1: public static void method(string x,ref string y,out string z) { x="我是传值类型"; y="我是传址类型,传入的参数必须先被初始化"

out 、ref、params

1.out参数 在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组,但是如果返回多个不同类型的值的时候,返回数组就不行,那么这个时候可以考虑用out参数. out参数侧重于在一个方法中可以返回多个不同类型的值. using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Collections;

C# 方法的out、ref、params参数

一.out参数实例 [实例]求一个数组中的最大值.最小值.总和.平均值 class Program { static void Main(string[] args) { //写一个方法 求一个数组中的最大值.最小值.总和.平均值 int[] nums = { 1, 2, 3, 4, 5, 6 ,7}; int max; int sum; int min; int avg; bool b; string s; double d; GetValue(nums, out max, out min,

浅谈c#的三个高级参数ref out 和Params

c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和Params,在这里我们来分别的讲解一下,在这里的我们先不做具体的解释,我会通过几个例子来做分别的解释. 一:out参数  1.首先我先给大家一个题:我们来写一个方法,来求一个数组中的最大值,最小值,总和,平均值.代码如下:  int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };  通过分析我们会发现如果我们写一个方