C# 中的 Out 和 Ref 及Params 参数

简介: out 和ref 参数 经常用来通过方法传递参数来获取值,当您的方法不只有一个返回值的时候,这两个参数就发挥作用了。ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。

 

out 和ref 参数 经常用来通过方法传递参数来获取值,当您的方法不只有一个返回值的时候,这两个参数就发挥作用了。ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。 
在这篇文章里,我将解释如何在c#应用中使用这两个参数。
 
1out 参数
 
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);
}
}
 
2ref 参数
 
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引用的可以修改,也可以不修改。
 
3params 参数
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();
    }

 

 

目录
相关文章
|
7月前
|
C#
C#系列之ref和out的区别
C#系列之ref和out的区别
222 0
|
7月前
|
存储 编解码 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
89 0
|
4月前
|
C# 计算机视觉
C#中out关键字
C#中out关键字
63 0
|
4月前
|
编译器 C# 计算机视觉
C#中的ref关键字
C#中的ref关键字
54 0
|
6月前
|
存储 Java 编译器
C# 变量与参数详解
C# 变量与参数详解
|
7月前
|
开发框架 小程序 .NET
C#动态生成带参数的小程序二维码
C#动态生成带参数的小程序二维码
|
7月前
|
存储 C#
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
方法是一段代码,只有在调用时才会运行。 您可以将数据(称为参数)传递给方法。 方法用于执行某些操作,也被称为函数。 为什么使用方法?为了重用代码:定义一次代码,然后多次使用。
127 0
|
C# 数据安全/隐私保护
C# 窗体之间参数互相传递的两种方法与使用
C# 窗体之间参数互相传递的两种方法与使用
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
33 3
|
22天前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
36 4