zoukankan      html  css  js  c++  java
  • 【总结】浅谈ref与out

    ref——仅仅是一个地址

    (1)当一个方法或函数在使用ref作为参数时,在方法中或函数中对ref参数所做的更改都将反映在该变量中。

    (2)如果要使用ref参数,则必须将参数作为ref显示传递到方法中。ref参数的值可以被传递到ref参数。

    (3)ref参数传递的变量必须初始化,因为ref参数在进入方法后还是它自己,它这个地址指向的还是原来的值,也因为这个原因,ref参数可以在使用它的方法的内部不操作。这与out不同,out的参数在传递前不需要显示初始化。

    (4)如果两种方法的声明仅在于它们对于ref的使用方面不同,则将出现重载。但是,无法定义尽在refout方面不同的重载。

    1 public string paramsRef(ref int i)
    2 {
    3     i++;
    4     return i.ToString();
    5 }

    以下是调用:

    int i = 120;
    new ParamTest().paramsRef(ref i);
    Console.WriteLine("i=" + i);//输出121

     out ——引用传递

    (1)当一个方法或函数在使用out作为参数时,在方法中或函数中对out参数所做的更改都将反映在该变量中。

    (2)当希望方法或函数返回多个值时,out参数十分有用,一个方法或函数可以有一个或多个out参数。

    (3)使用out参数时,可以不必为参数初始化值,因为out参数进入方法体后会清空自己。

    (4)使用out参数时,必须显示指定out关键字。

    (5)方法签名中,同一类型参数,如果一个含有out参数,另一个不包含out参数,则发生重载。

    示例:

    1 public int Method(int i,out string str)
    2 {
    3     i+=10;
    4     str="我是out参数!";
    5     return i;
    6 }

    调用:

    1 public static void Main(string[] args)
    2 {
    3     int i=10;
    4     string outStr;//不必初始化
    5     i=Method(i,out outStr);
    6     Console.WriteLine(i.ToString());
    7     Console.WriteLine(outStr);//输出out参数
    8 }

     作者:悠扬的牧笛

     博客地址:http://www.cnblogs.com/xhb-bky-blog/p/3490036.html

     声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 相关阅读:
    二叉排序树(B-Tree)-c实现
    队列(Queue)-c实现
    栈(stack)--c实现(使用双链表)
    链表(list)--c实现
    c 和 指针读书笔记(1)
    c traps and pitfalls reading notes(2)
    js 控制
    正则表达式
    Android 笔记
    Android 布局方式学习
  • 原文地址:https://www.cnblogs.com/xhb-bky-blog/p/3490036.html
Copyright © 2011-2022 走看看