前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 中的 Out 和 Ref 及Params 参数

C# 中的 Out 和 Ref 及Params 参数

作者头像
跟着阿笨一起玩NET
发布2018-09-18 15:10:11
1.1K0
发布2018-09-18 15:10:11
举报
out 和ref 参数 经常用来通过方法传递参数来获取值,当您的方法不只有一个返回值的时候,这两个参数就发挥作用了。ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。 
在这篇文章里,我将解释如何在c#应用中使用这两个参数。
 
1、out 参数
 
out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
 
public class mathClass
{
public static int TestOut(out int iVal1, out int iVal2)
{
    iVal1 = 10;
    iVal2 = 20;
    return 0;
} 
public static void Main()
{
    int i, j; // variable need not be initialized 
    Console.WriteLine(TestOut(out i, out j));
    Console.WriteLine(i);
    Console.WriteLine(j);
}
}
 
2、ref 参数
 
ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 
static void Main(string[] args)
{
// Ref sample 
   int refi; // variable need be initialized 
   refi = 3; 
   RefTest(ref refi); 
   Console.WriteLine(refi); 
   Console.ReadKey(); 
} 
public static void RefTest(ref int iVal1) 
{ 
   iVal1 += 2; 
}
 
 ref和out参数的区别
  
使用ref前必须对变量赋值,out不用。 
out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。
 
(3)params 参数
params 关键字可以指定在参数数目可变处采用参数的方法参数。
在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
using System;
class App
{
    public static void UseParams(params object[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.WriteLine(list[i]);
        }
    }
    static void Main()
    {
        // 一般做法是先构造一个对象数组,然后将此数组作为方法的参数
        object[] arr = new object[3] { 100, 'a', "keywords" };
        UseParams(arr);
        // 而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数
        // 当然这组参数需要符合调用的方法对参数的要求
        UseParams(100, 'a', "keywords");
        Console.Read();
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-06-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档