使用未分配的输出参数' q'

时间:2014-10-31 18:06:25

标签: c# unassigned-variable

错误使用未分配的输出参数' 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;  
    }  
}  

1 个答案:

答案 0 :(得分:8)

你所做错的正是编译器所说的你做错了 - 你试图从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);