zoukankan      html  css  js  c++  java
  • c#中ref与out区别

    首先:两者都是按地址传递的,使用后都将改变原来的数值。很多人在论坛上解释说out是按数值传递,是错误的。简单的测试后可以知道out使用也能改变数值的,所以肯定是按照地址传递的。
    其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,rel是有进有出,out是只出不进。经典!!!

    这是ref的用法,ref起到引用传递的作用,你可以把ref去掉看看结果

    C# code
    static void Main(string[] args)
    {
    int a = 0;
    int b = 1;
    Swap(ref a, ref b);
    Console.WriteLine("a={0},b={1}",a,b);

    }

    static void Swap(ref int a, ref int b)
    {
    int temp = a;
    a = b;
    b = temp;
    }
    这是out的用法,out起到输出参数的作用,比如下面MaxMin函数,需要返回最大值和最小值两个返回值,就不能用return返回,要用out
    C# code
     
    static void Main(string[] args)
    {
    int[] arr = { 5,3,8,1,6,9,4};
    int max;
    int min;
    MaxMin(arr, out max,out min);
    Console.WriteLine("max={0},min={1}", max, min);
    }

    static void MaxMin(int[] arr, out int max, out int min)
    {
    max = min = arr[0];
    for (int i = 1; i < arr.Length; i++)
    {
    if (arr[i] > max) max = arr[i];
    if (arr[i] < min) min = arr[i];
    }
    }
  • 相关阅读:
    解决maven导入坐标太慢问题
    +=的扩展
    JavaScript
    多线程
    异常
    面向对象
    数组
    java内存
    循环语句和递归
    剑指 Offer 30. 包含min函数的栈
  • 原文地址:https://www.cnblogs.com/Loyalty/p/2195208.html
Copyright © 2011-2022 走看看