Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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# - Fatal编程技术网

C# 为什么赢了';此函数是否更新变量?

C# 为什么赢了';此函数是否更新变量?,c#,C#,我将变量保存到一个数据字符串中,然后尝试将这些字符串转换回变量,如下所示: using System; public class Program { static int pop; static string[] log = new string[10]; public static void Main() { string abc = "5 6 10 345 23 45"; log = abc.Split(' ');

我将变量保存到一个数据字符串中,然后尝试将这些字符串转换回变量,如下所示:

using System;

public class Program
{
    static int pop;
    static string[] log = new string[10];
    public static void Main()
    {
       string abc = "5 6 10 345 23 45";
       log = abc.Split(' ');
       Conv(3,pop);
       Console.WriteLine(pop); // expected result: pop == 345
    }
    static void Conv(int i, int load)
    {
       if (log[i] != null){ load = int.Parse(log[i]);}
    }
}
Pop应为345,但返回0。使用时没有问题
pop=int.Parse.log[i]

因为
load
是通过值传递的,而不是通过引用传递的(这意味着它是被复制的)。使用或关键字,或只返回
return

void Conv(int i, ref int load)
{...}

...

Conv(3,ref pop);

publicstaticvoidmain()
{
字符串abc=“5 6 10 345 23 45”;
log=abc.Split(“”);
int newPop=Conv(3,pop);
控制台写入线(newPop);
}
静态int Conv(int i,int load)
{
if(log[i]!=null)
{
返回int.Parse(log[i]);
}
返回载荷;
}
或者稍微重构一下:

static int Conv(int i,int load)
{
字符串项=日志[i];
返回项==null
负载
:int.Parse(条目);
}

这个答案是正确的,因为事先没有对ref参数做任何处理,为什么不直接从函数返回它而不是传递它呢?@oerkelens Thank记录了返回或输出。