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记录了返回或输出。