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++ 失效了。

  • 相关阅读:
    msql 计算连续签到天数
    jetty启动常用命令
    nginx负载均衡, 配置地址带端口
    IDEA java 代码格式化统一
    Linux下安装Zookeeper
    nexus admin 从文件角度进行密码重置
    Monkey测试
    接口测试
    我的IT之路
    cookie 操作(转载)
  • 原文地址:https://www.cnblogs.com/BinaryBoy/p/2280524.html
Copyright © 2011-2022 走看看