zoukankan      html  css  js  c++  java
  • 适合新手看的ref和out

    面试的时候一般很高的概率会问到ref和out的区别。。。我们死记硬背的话很难记住。

    建议大家和我一样简单的探索一下。动手试一下就能记住了。

    共同点是我们在使用ref或者out的时候一定要在写的方法里面的参数前面加上ref和out

    调用的时候也是一样要写上的

    若要使用ref或者 out 参数,方法定义和调用方法都必须显式使用 ref或者out 关键字。

     1 namespace test
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             int k;//我们定义了一个未初始化的int变量
     8             //定义一个初始化之后的int变量
     9             int i = 1;
    10            
    11             //ref使用的时候必须要初始化。。
    12             //在调用方法传递未初始化的变量的时候。系统提示“使用了未赋值的局部变量k”
    13             //Myref(ref k);
    14 
    15             //使用初始化之后的变量i试一下
    16             Myref(ref i);//运行结果是1
    17             
    18             //赋值一个初始化的i=1。
    19             Myout(out i);//结果为3
    20             //赋值一个未初始话的值k
    21             Myout(out k);//结果为3
    22             Console.ReadKey();
    23             
    24         }
    25        static public void Myref(ref int number)
    26         {
    27           //  number = 2;当我们对number值改变的时候。。输出结果会是2
    28             Console.WriteLine(number);
    29         }
    30         //如果我们不对number赋值。。会提示在控制离开当前方法之前必须对out参数赋值。
    31         static public void Myout(out int number)
    32         {
    33             //我们对number赋值之后输出
    34             number = 3;
    35             Console.WriteLine(number);
    36         }
    37 
    38     }
    39 }

    最后得出结论。。

    1.使用ref调用方法。参数必须是初始化之后的变量。

    2.使用out调用方法。参数可以不初始化。也可以传递初始化的参数。

    3.使用ref作为参数的方法。方法可以不对传进来的参数赋值。

    4.使用out作为参数的方法。方法必须对传进来的参数进行赋值。

     

  • 相关阅读:
    【Java8】 @FunctionalInterface 函数式接口
    集合使用copy与mutableCopy的区别
    GCD中的dispatch_sync、dispatch_sync 分别与串行、并行队列组合执行小实验
    podspec文件介绍
    iOS系统app崩溃日志手动符号化
    webView文本长按显示英文
    深拷贝
    view向全屏延伸时的属性设置
    iOS 模拟器截屏快捷键
    mysql 优化常用语句
  • 原文地址:https://www.cnblogs.com/melodygkx/p/6086339.html
Copyright © 2011-2022 走看看