-3

使用未分配的输出参数“q”和“g”时出错,请纠正我做错的地方。提前致谢。

using System;  
using System.Collections.Generic;
using System.Linq;
using System.Text;  
using System.Threading.Tasks;   

class Program  
{  
    static void Main(string[] args)  
    {  
        int p = 23;  
        int f = 24;  
        Fun(out p, out f);  
        Console.WriteLine("{0} {1}", p, f);  

    }  
    static void Fun(out int q, out int g)  
    {  
        q = q+1;  
        g = g+1;  
    }  
}  
4

1 回答 1

9

您做错的正是编译器所说的您做错的事情-您试图在确定分配参数之前从参数中读取。out看看你的代码:

static void Fun(out int q, out int g)  
{  
    q = q + 1;  
    g = g + 1;  
}  

在每种情况下,赋值表达式的右侧都使用了一个 out 参数,并且该 out 参数还没有被赋予一个值。out参数最初不是明确分配的,必须在方法返回之前明确分配(通过异常除外)

如果想法是增加两个参数,则应ref改为使用。

static void Fun(ref int q, ref int g)  
{  
    q = q + 1;  
    g = g + 1;  
}  

或者更简单地说:

static void Fun(ref int q, ref int g)  
{  
    q++;
    g++;
}  

您需要将调用代码更改为:

Fun(ref p, ref f);
于 2014-10-31T18:10:31.750 回答