zoukankan      html  css  js  c++  java
  • ref

    1 ref 功能

    ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。简单点说就是,使用了refout的效果就几乎和C中使用了指针变量一样。它能够让你直接对原数进行操作,而不是对那个原数的Copy进行操作。

    若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。例如:
     
    class RefExample
    {
    static void Method(ref int i)
    {
    i = 44;
    }
    static void Main()
    {
    int val = 0;
    Method(ref val); // val is now 44
    }
    }

    2使用时注意:编辑

    传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。
    尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
    例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:
     
    class CS0663_Example
    {
    // compiler error CS0663: "cannot define overloaded
    // methods that differ only on ref and out"
    public void SampleMethod(ref int i)
    {
    }
    public void SampleMethod(out int i)
    {
    }
    }
    但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:
     
    class RefOutOverloadExample
    {
    public void SampleMethod(int i)
    {
    }
    public void SampleMethod(ref int i)
    {
    }
    }
  • 相关阅读:
    BZOJ1077 并查集
    linux(fedora) 第三课
    hdu 4513 吉哥系列故事——完美队形II(manacher)
    hdu 3294 Girls' research(manacher)
    FZU
    蓝桥杯试题 k倍区间(dp)
    蓝桥杯 带分数(全排列+枚举)
    天梯赛 L2-001 紧急救援
    蓝桥杯[2017年第八届真题]分考场 (图着色问题)
    hdu 3068 最长回文(manacher)
  • 原文地址:https://www.cnblogs.com/xzh1993/p/4174665.html
Copyright © 2011-2022 走看看