【问题标题】:Difference between passing values and reference传递值和引用之间的差异
【发布时间】:2016-11-14 09:18:24
【问题描述】:

我试图了解按值调用和按引用调用之间的区别。有人向我解释说,通过引用改变了实际的内存位置值,而按值调用只是改变了实例(虚拟值)而不是实际的。所以我试图让那个程序检查值和参考是如何工作的。我的程序不工作,我是否正确地实现了逻辑?

这是已解决和工作代码的修订版。

    static void Main(string[] args)
    {
        Program pro = new Program();
        int i = 1;

        Console.WriteLine("Call By Value:  ");
        pro.byVal(i);
        Console.WriteLine(i);
        Console.ReadKey();

        Console.WriteLine("\n\n\nCall By Reference:  ");
        pro.byRef(ref i);
        Console.WriteLine(i);
        Console.ReadKey();
    }

    public void byVal(int i)            //*******   Call by Value    *******//
    {
        i = 2;
    }
    public void byRef(ref int i)        //*******   Call by Refrence    *******//    
    {
        i = 3;
    }

【问题讨论】:

  • 这段代码真的可以编译吗?
  • “我的程序不工作”是什么意思?你想达到什么目标?请参考这篇文章:msdn.microsoft.com/en-us/library/0f66670z.aspx
  • 是的@MongZhu
  • 我得到一个编译器错误:An object reference is required for the non-static field, method, or property 'testproj.Program.byVal(int)'
  • 创建类文件对象,然后通过该对象调用方法。这是修改后的版本:

标签: c# visual-studio-2010 pass-by-reference pass-by-value


【解决方案1】:

你需要换个电话

byRef(i);

byRef(ref i);

如果你想通过引用来调用它。

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 2020-07-21
    • 2012-03-03
    • 2011-05-07
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多