zoukankan      html  css  js  c++  java
  • C# 中i++在ref参数调用下的有趣现象

    废话少说,今天自己下了 ref 与 out 例子,发现了如下问题,先看代码

    class Program
    {
    static void Main(string[] args)
    {
    int i = 0;
    int x = 0;
    RefTest(ref i);
    RefTest1(ref x);
    int j,y;
    OutTest(out j);
    OutTest1(out y);
    Console.WriteLine("J--->value:" + j);
    ParamTest();
    ParamTest(1, 2, 3);
    ParamTest(4, 5, 6, 7);
    Console.Read();

    }

    static void RefTest(ref int i)
    {
    i = i + 1;
    Console.WriteLine(i);
    }

    static void RefTest1(ref int x)
    {
    x = x++;
    Console.WriteLine(x);
    }

    static void OutTest(out int j)
    {
    j = 0;
    j = j +1;
    Console.WriteLine(j);
    }

    static void OutTest1(out int y)
    {
    y = 0;
    y = y ++;
    Console.WriteLine(y);
    }

    static void ParamTest(params int[] iList)
    {
    if (iList.Length > 0)
    {
    Console.WriteLine("Params Number is:" + iList.Length);
    for (int i = 0; i < iList.Length; i++)
    {
    Console.Write("Params[{0}]--->value:", i);
    Console.WriteLine(iList[i]);

    }
    }
    else
    {
    Console.WriteLine("Params Not is Used");
    }
    }
    }

    运行以上结果 :

    大家 可以看一下 在调用 同等的 refTest(),outtest()与refTest1(),outTest1()方法的时候,唯一区别的地方是 i=i+1;与i=i++这两处,结果完全迥异,不明白为什么,希望高手解答。

    在用 ref 与 out的时候 i++ 失效了。

  • 相关阅读:
    k8s管理
    Docker
    容器技术学习系列(一)-Docker基础知识学习
    Linux系统下DHCP服务安装部署和使用详解
    Linux下配置yum源为阿里云或网易的详解
    一道算法题目(1)
    SS命令和Netstat命令比较
    centos配置redis的主从复制(2)
    centos配置redis的主从复制(1)
    散列表(22)
  • 原文地址:https://www.cnblogs.com/BinaryBoy/p/2280524.html
Copyright © 2011-2022 走看看