• 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)
    {
    }
    }
  • 相关阅读:
    aspnetcore identity result.Succeeded SignInManager.IsSignedIn(User) false?
    RFID
    window 关机
    有赞零售小票打印图片二值化方案
    条码打印
    音频基本概念
    2008R2 部署 aspnetcore repair failed 函数不正确
    IIS 字符串过长
    解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
    book
  • 原文地址:https://www.cnblogs.com/xzh1993/p/4174665.html
Copyright © 2020-2023  润新知