未分配的变量错误

时间:2015-10-08 11:50:56

标签: c# unassigned-variable

using System;

namespace ConsoleApplication
{
    class Program
    {
        public delegate void mydel(int z);

        static void Main(string[] args)
        {
            Program p = new Program();

            Random r = new Random();
            int k = r.Next(99);

            mydel f;

            if (k > 50)
            {
                f = new mydel(p.high);
            }

            if (k < 50)
            {
                f = new mydel(p.low);
            }

            //f(k) is underlined and Use of unassigned local variable 'f'     
            f(k);
        }

        //methods
        public void high(int m)
        {
            Console.WriteLine("{0}>50", m);
        }

        public void low(int n)
        {
            Console.WriteLine("{0}<50", n);
        }
    }
}

我希望f(k)能够工作,因为我给了委托参数。为什么我收到此错误? (在f(k)部分使用未分配的局部变量&#39; f)

2 个答案:

答案 0 :(得分:2)

只需添加null

即可
mydel f = null

或者在条件之间放置其他内容。因为,k == 50 f未初始化时:

    mydel f;

    if (k > 50)
    {
        f = new mydel(p.high);
    }
    else
    {
        f = new mydel(p.low);
    }

答案 1 :(得分:2)

如果k > 50则f是某个代表,如果k < 50 - 也是。{如果k == 50怎么办?在这种情况下,f未指定(即使它不为空) - 因此您无法使用它。

快速修复:

mydel f = null;

但是NullReferenceException时你会得到k == 50; 您还可以在if;

的情况下添加其他k == 50