未分配变量错误

本文关键字:错误 变量 分配 | 更新日期: 2023-09-27 18:16:33

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( 部分使用未赋值的局部变量 'f'(

未分配变量错误

只需添加null

mydel f = null

或者把其他东西放在条件之间。因为,当 f 未初始化k == 50时:

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

如果k > 50那么f是某个委托,如果k < 50 - 也是。如果k == 50呢? 在这种情况下,没有指定f(即使它不为 null( - 因此您不能使用它。

快速修复:

mydel f = null;

但是当你k == 50时你会得到NullReferenceException;您还可以为k == 50的情况添加其他if;