0

我查看了 google 和其他 stackoverflowUse of unassigned local variable错误,但仍然找不到答案。我认为也许我的错误是因为滥用了 ExtractionCtrl 的范围。我尝试了这段代码来测试范围并且它有效。所以我现在不知道我的错误在哪里。

测试范围

namespace RandomTesting
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int x = 5;

            switch (x)
            {
                case 2:
                    System.Console.WriteLine("Your # is 2");
                    break;

                case 5:
                    System.Console.WriteLine("Your # is :{0}", x);
                    x = x + 2;
                    System.Console.WriteLine("Your # is :{0}", x);
                    break;
            }

            System.Console.WriteLine("Your # is :{0}", x);
            Console.ReadLine();
        }
    }
}

主要代码的一部分

switch (arg)
{
    case "AR":
        ExtractionCtrl = new ARExtractionController();

        // add new mapping here
        break;

    case "ICN":
        ExtractionCtrl = new IcnExtractionController();

        // add new mapping here
        break;
}

int ticketID;
if (int.TryParse(arg, out ticketID))
{
    string returnedFilePath = ExtractionController.GetStartupPath();
    ExtractionCtrl.Extract(ticketID, returnedFilePath, AR_TEMPLATE_PATH, MAPPING_PATH);
}
4

3 回答 3

4

您设置 ExtractionCtrl 的开关没有默认情况,因此在切换后 ExtractionCtrl 可能未初始化。由于您没有显示 ExtractionCtrl 的声明,我假设它是在没有初始化的情况下声明的:

SomeExtractionCtrlType ExtractionCtrl;

因此错误。

于 2012-09-24T19:42:53.253 回答
1

您很可能需要defaultswitch.

switch (arg)
{
    case "AR":
        ExtractionCtrl = new ARExtractionController();

        // add new mapping here
        break;

    case "ICN":
        ExtractionCtrl = new IcnExtractionController();

        // add new mapping here
        break;
    default:
        ExtractionCtrl = new DefaultExtractionController();
        break;
}

ExtractionCtrl或者您可以在定义它时进行初始化。不过,我更喜欢这个default选项。

于 2012-09-24T19:43:37.707 回答
1

在 Visual Studio 中,这是一个非常常见的编译时错误,这意味着编译器认为变量在被调用之前可能不会被初始化。正如其他答案所说,您应该做的是添加一个default案例,但在声明变量时也要初始化变量,或者将其初始化为您nulldefault. 不幸的是,Visual Studio 非常挑剔,它并没有看到所有潜在的路径最终都会授予一个值。

于 2012-09-24T19:47:35.867 回答