C# 中的 Ref int 问题

Posted

技术标签:

【中文标题】C# 中的 Ref int 问题【英文标题】:Ref int question in C# 【发布时间】:2011-10-24 03:00:30 【问题描述】:

简单地说,我正在使用一个while循环来重复一个方法,并且每次运行该方法时,int“i”都会增加1。虽然我在调用“NumberUp”方法时遇到了麻烦。错误输出如下。

主要方法:

while (true)

    NumberUp(0);

NumberUp 方法:

public static void NumberUp(ref int i)

    i++;
    System.Console.WriteLine(i);

我不断收到以下错误:

“ConsoleApplication2.Program.NumberUp(ref int)”的最佳重载方法匹配有一些无效参数

【问题讨论】:

您是否要增加文字 0 的值?将文字作为 ref 传递是没有意义的。 Why use the 'ref' keyword when passing an object?的可能重复 @JimFell 这是一个单独的问题。 【参考方案1】:

要调用带有ref 参数的方法,您需要传递一个变量,并使用ref 关键字:

int x = 0;
NumberUp(ref x);
//x is now 1

这会将引用传递给x 变量,从而允许NumberUp 方法将新值放入变量中。

【讨论】:

【参考方案2】:

Ref 用于将变量作为引用传递。但是你不是在传递一个变量,你是在传递一个值。

 int number = 0;
 while (true)
 
      NumberUp(ref number );
 

应该做的伎俩。

【讨论】:

【参考方案3】:

一个ref参数需要ref传递,需要一个变量:

int i = 0;
while (true)

    NumberUp(ref i);

【讨论】:

现在这太愚蠢了!在循环外声明i【参考方案4】:

您必须将0 作为引用传递给包含0 的变量,例如:

int i = 0;
NumberUp(ref i);

在 MSDN 上阅读此处以了解有关 ref 关键字的更多信息。

【讨论】:

措辞不好。您需要传递对包含0 的变量的引用。【参考方案5】:

ref

NumberUp(ref number );

【讨论】:

以上是关于C# 中的 Ref int 问题的主要内容,如果未能解决你的问题,请参考以下文章

浅谈c#的三个高级参数ref out 和Params

c#中的ref用法

C# 中的 Lambda 和 ref/out

C# 中的三个高级参数 ref

C# 中的 ref 已经被放开,或许你已经不认识了

C# - 通过 REF 从异步方法回调更新变量 - WebClient 类