C#之out,ref关键字

在C#中,我们会见到out,ref关键字,这跟java很不一样,接下来,我们就来了解一番,

1,out关键字

  概念:一个带有输出参数的的方法(方法的的参数有被out关键字修饰),有义务在方法退出的时候给这个参数一个恰当的赋值,如果没有,方法编译会报错。

  例子:伪代码如下

  static void doMethod(int y,out int ans)

  {

    ans = y*2;//被关键字out修饰的参数ans被赋值

  }

  static void main(string args[]){

      int ans;

      doMethod(90,out ans);//调用带输出参数的方法,也必须使用out关键字修饰

  }

上面的例子说明,用输出参数返回一个数的一半,看似没有发现out的意义,实际上设计者设计out关键字是有一个很有用的用途的:那就是我们通过out关键字,可以在一个方法中一次就输出多个返回值,如下

  static void doMethod(out string name,out int age,out char sex)

  {

    name = "张三";

    age = "30";

    sex = '1';  

  }

2,ref关键字

  ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 

  static void Main(string[] args)
  {
    int x = 1;
    int y = 1;
    doSome(ref x);
    doSome(y);
    Console.Write(x+"");
    Console.Write(y + "");

  }
  static void doSome(ref int x)
  {
    x = 10;
  }
  static void doSome( int x)
  {
    x = 10;
  }

以上伪代码可看出,ref关键字是对变量的引用进行改变,所以doSome(ref int x)输出10,doSome(int x)输出1,另外可以看出,重载时,ref修饰和不修饰的的签名被认为是不同的,重载可以成功。

 

  

posted @ 2016-08-23 15:07  Roger's  阅读(258)  评论(0编辑  收藏  举报