zoukankan      html  css  js  c++  java
  • ref与out

    1.基本理解

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             Person p = new Person();
     6             p.Name = "zhangsan";
     7             int i = 3;
     8             Test(p, i);
     9             Console.WriteLine(p.Name);
    10             Console.WriteLine(i);
    11             Console.ReadKey();
    12         }
    13 
    14         static void Test(Person p,int i)
    15         {
    16             p.Name = "哈哈哈";
    17             i = 666;
    18         }
    19     }
    20 
    21     class Person
    22     {
    23         public string Name { get; set; }
    24     }
    View Code

    打印结果为: i的值未改变。

     2.使用ref后(ref直接把变量传递到一个方法里)

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             Person p = new Person();
     6             p.Name = "zhangsan";
     7             int i = 3;
     8             Test(ref p, ref i);
     9             Console.WriteLine(p.Name);
    10             Console.WriteLine(i);
    11             Console.ReadKey();
    12         }
    13 
    14         static void Test(ref Person p,ref int i)
    15         {
    16             p = new Person();
    17             p.Name = "哈哈哈";
    18             i = 666;
    19         }
    20     }
    21 
    22     class Person
    23     {
    24         public string Name { get; set; }
    25     }
    View Code

    打印结果为:    i的值也改变了。(ref就相当于把外部的变量传进来了,在函数内部可以改变外部变量的指向)

    3.ref的应用:交换两个变量的值

     1 static void Main(string[] args)
     2         {
     3             
     4             int i1 = 4, i2 = 5;
     5             Swap(ref i1, ref i2);//必须带上ref
     6             Console.WriteLine($"i1的值为{i1}");
     7             Console.WriteLine($"i2的值为{i2}");
     8             Console.ReadKey();
     9         }
    10 
    11         static void Swap(ref int a,ref int b)
    12         {
    13             int temp = a;
    14             a = b;
    15             b = temp;
    16         }
    View Code

    打印结果为:

     4.out和ref的区别

     4.1 out的使用

     1        static void Main(string[] args)
     2         {
     3             
     4             int i = 99;
     5             Test2(out i);
     6             Console.WriteLine($"i的值为{i}");
     7             Console.ReadKey();
     8         }
     9         static void Test2(out int i)
    10         {
    11             i = 8;
    12         }
    View Code

    打印结果为:

     4.2 out用来返回返回值(int.TryParse())

     

  • 相关阅读:
    有return的情况下try_catch_finally的执行顺序
    java异常处理之try_catch_finally
    乔布简历
    策略模式--经典详细分析
    观察者模式(Observer Pattern)(二):HeadFirst中的气象站的实现
    luogu2444 [POI2000]病毒
    bzoj3172 luogu3966 [TJOI2013]单词
    luogu3808 luogu3796 AC自动机(简单版) AC自动机(加强版)
    vijos1459 车展
    poj2985 The k-th Largest Group
  • 原文地址:https://www.cnblogs.com/Mask71/p/12019414.html
Copyright © 2011-2022 走看看