zoukankan      html  css  js  c++  java
  • C# out ref

    out 参数修饰符

    out 关键字通过引用传递参数。

    1、使用 out 参数,方法定义和调用方法均必须显式使用 out 关键字。

    2、out 参数传递的变量在方法调用中传递之前不必进行初始化。 但是,被调用的方法需要在返回之前赋一个值。

    在 C# 6 及更早版本中,必须先在单独的语句中声明变量,然后才能将其作为 out 参数传递。 下面的示例先声明了变量 number,然后再将它传递给将字符串转换为数字的 Int32.TryParse 方法。

      static void Main(string[] args)
            {   int  a;
                string y = "999kk";
                bool  B = MyintParse(y,out  a);
            }
    
    public static bool MyintParse(string s,out int r)
            {
                r = 0;//out 先赋值后使用
                try
                {
                    r = int.Parse(s);
                    return true;
                }
                catch (Exception)
                {
                    return false;
                    throw;
                }
            }

    从 C# 7.0 开始,可以在方法调用的参数列表而不是单独的变量声明中声明 out 变量。 这使得代码更简洁可读,还能防止在方法调用之前无意中向该变量赋值。 下面的示例与上一个示例基本相同,不同之处在于它在对 Int32.TryParse 方法的调用中定义了 number 变量。

    string numberAsString = "1640";
    
    int number;
    if (Int32.TryParse(numberAsString, out number))
        Console.WriteLine($"Converted '{numberAsString}' to {number}");
    else
        Console.WriteLine($"Unable to convert '{numberAsString}'");
    // The example displays the following output:
    //       Converted '1640' to 1640

    ref 关键字指示按引用传递的值。

    在方法签名和方法调用中,按引用将参数传递给方法。

    在方法签名中,按引用将值返回给调用方。

    在成员正文中,指示引用返回值是否作为调用方欲修改的引用被存储在本地,或在一般情况下,局部变量按引用访问另一个值。

    struct 声明中声明 ref structref readonly struct

    1、若要使用 ref 参数,方法定义和调用方法均必须显式使用 ref 关键字

    2、传递到 refin 形参的实参必须先经过初始化,然后才能传递。 这与 out 形参不同,在传递之前,不需要显式初始化该形参的实参。

    ref作为参数的函数在调用前,实参必须赋初始值。否则编译器将提示:使用了未赋值的局部变量;

    out作为参数的函数在调用前,实参可以不赋初始值。(C# 7.0 开始)

    有out|ref关键字的方法可以与无out和ref关键字的方法构成重载;但如想在out和ref间重载,编译器将提示:不能定义仅在ref和out的上的方法重载

    out用于传出值,ref可以理解为双向的,即可传入,亦可传出。

    如果有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中变量的值也会相应额改变。

  • 相关阅读:
    C#新特性
    蛋清打发奶油状
    VS 2015 开发Android底部导航条----[实例代码,多图]
    使用微软的MSBuild.exe编译VS .sln .csproj 文件
    双色球基础分析--SQL
    Windows 7 中的 God Mode
    Free Online SQL Formatter
    Windows 特殊文件夹
    常用DNS列表(电信、网通)
    C语言词法分析:C#源码
  • 原文地址:https://www.cnblogs.com/zeng-qh/p/10303470.html
Copyright © 2011-2022 走看看