zoukankan      html  css  js  c++  java
  • C#中的out,ref,params的用法讲解

    方法调用语句
    在编写程序的过程中,经常要进行方法调用,而调用方法时最关键的就是参数的使用。在C#语言中,方法只能返回一个值,要从方法中获取多个输出值,则只能通过参数来进行。但是,在通常的参数传递中,只有引用类型的参数才能实现这种功能,而对于值类型的参数,当从方法退出后,参数的值也就不再有意义。因此C#语言提供了ref、out两种新的参数声明方式,另外,还提供了parmas参数声明方式来说明变长参数列表。
    一、 ref参数声明方式
    在参数声明中使用ref关键字可以使方法赶接引用传递给它的变量,这样方法中的操作都是直接针对传递给它的变量进行的,而不是一个复制的值。因此,可以使用这种方式在方法调用时来双向传递变量。
    为了以ref方式使用参数,必须在方法声明和方法调用中明确指定ref关键字,并且变量在传递给方法前必须进行初始化。如下列代码:

     

    … Public class MyClass { //在方法声明中使用ref关键字 Public static void Method1(ref int i) {  I=0;//把参数值设置为0 } … Public static void Main() { Int myint=1;    //变量必须初始化 Method1(ref myint);  //调用方法改变变量myint的值 Console.WriteLine(myint); //此时,myint的值为0 } }

    二、 out参数声明方式 out关键字的使用方式和作用与ref关键字基本相同,也是使用方法直接引用传递给它的变量,并且对参数的修改都直接作用到对应的变量上。用户可以使用这种参数方式从方法中输出多个值。同样,这种方式要西游记在方法声明和方法调用时都必须明确的指定out关键字。Out参数声明方式不要求变量传递给方法前进行初始化,因为它只是用于输出。但是,在方法返回前,必须对out参数进行赋值。如下面的例子: … Public class Myclass {  //在方法声明中使用out关键字,该方法输出两个参数 Public static void Method1(out int x,out int y) { //为输出参数赋值 X=0; Y=0;   }   …   Public stati c void Main()   {    Int x,y;      //变量不需要初始化    Method1(out x,out y);   //调用方法获取变量的值,使用方法时也需要使用out关键字.    Console.WriteLine(“{0},{1}”,x,y);    }  }

     

    三、 params参数声明方式 params关键字用于声明可变长度的参数列表。注意,在方法声明中,params参数后面不能再有其它参数,并且方法声明中只能包含一个params参数。下面的代码演示了params参数的用法: using System; public class MyClass {  Publc static void useParams(params int [] list)  {   For(int i=0;i<list.Length;i++)    Console.Write(list[i]);   Console.WriteLine();  }  Public static void useParams2(params object[] list)  {   For(int i=0;i<list.Length;i++)    Console.Write((object)list[i]);   Console.WriteLine();  }  Public static void Main()  {   useParams(1);    //传递一个参数   useParams(1,2,3);   //传递3个参数   useParams2(1,’2’,”test”);   int[] myarray=new int[3]{10,11,12};   useParams(myarray); }  }

  • 相关阅读:
    DNS服务器原理简述、搭建主/从DNS服务器并实现智能解析
    JQuery02
    JQuery01
    python05
    python04
    python03
    Liunx命令
    Python运算符及注释
    python01
    原生JDBC+mybatis
  • 原文地址:https://www.cnblogs.com/ruishuang208/p/3072630.html
Copyright © 2011-2022 走看看