Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递值和引用之间的差异_C#_Visual Studio 2010_Pass By Reference_Pass By Value - Fatal编程技术网

C# 传递值和引用之间的差异

C# 传递值和引用之间的差异,c#,visual-studio-2010,pass-by-reference,pass-by-value,C#,Visual Studio 2010,Pass By Reference,Pass By Value,我试图理解按值调用和按引用调用之间的区别。有人向我解释说,通过引用更改实际内存位置值,而通过值调用只更改实例(虚拟值),而不更改实际值。所以我试着让那个程序通过值和引用来检查它是如何工作的。我的程序不工作,我是否正确实现了逻辑 以下是已解决和工作代码的修订版本 static void Main(string[] args) { Program pro = new Program(); int i = 1; Console.Writ

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

以下是已解决和工作代码的修订版本

    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;
    }

你需要换电话

byRef(i);


如果您想通过引用调用它。

您需要更改调用

byRef(i);


如果你想引用它。

这段代码真的可以编译吗?你说的“我的程序不工作”是什么意思?你想要实现什么?请参阅本文:是的,@MongZhuI确实收到编译器错误:
非静态字段、方法或属性“testproj.Program.byVal(int)”需要对象引用
创建类文件的对象,然后通过该对象调用方法。这是修订版:这段代码真的可以编译吗?你说的“我的程序不工作”是什么意思?你想要实现什么?请参阅本文:是的,@MongZhuI确实收到编译器错误:
非静态字段、方法或属性“testproj.Program.byVal(int)”需要对象引用
创建类文件的对象,然后通过该对象调用方法。以下是修订版本: