3 回答

TA贡献1845条经验 获得超8个赞
某处你有:
string path;
做了
string path = null;
它可以解决您的问题。
尽管已分配null,但该路径并未在标签处未分配。
但是,既然我想到了,也许你的意思是:
string path = @"C:\incidents\jobTransfer";
这样,它从一开始就被分配并具有有效值。
看到这个小提琴:
例子
string path;
goto End;
AnotherLabel:
path = @"C:\incidents\jobTransfer";
Console.WriteLine(path);
End:;
// issue at path in this line
Console.WriteLine(path);
使固定
string path = null;
goto End;
AnotherLabel:
path = @"C:\incidents\jobTransfer";
Console.WriteLine(path);
End:;
// no issue at path in this line
Console.WriteLine(path);
建议
string path = @"C:\incidents\jobTransfer";
goto End;
AnotherLabel:
Console.WriteLine(path);
End:;
// no issue at path in this line
Console.WriteLine(path);
建议
// don't use labels, due to these kinds of obscurities ;-)

TA贡献1780条经验 获得超4个赞
问题很可能是您的标签 - 这允许跳转到您的“结束”标签的代码路径,该标签允许不设置“路径”。
2个简单的解决方案:
重新分配 "path = @"C:\incidents\jobTransfer";" 在“结束”标签之后 - 您提到的是有问题的,因为如果更改,您将有两个地方可以编辑代码。(不过,如果您在某种配置文件中对其进行参数化,则可以更改一次)。
将标签放在“path”的原始分配上方并使用一些条件来跳过你的“File.WriteAllLines(path + event + "\result_" + event + ".txt", resultText.ToArray());” 如果它不想要。
更好的解决方案是根本不使用标签 - 这些通常是不受欢迎的,而您的问题是众多原因之一;尽管如此,在每个人都因为使用 goto 而跳下喉咙之前,有一些可以说是可以接受的使用它的理由。

TA贡献1872条经验 获得超4个赞
由于您使用的是 Label - 这在 C# 中不常见,此标签上方的范围本质上是一个范围,然后是另一个范围 - 因此声明的变量不再在范围内,因此这就是不再分配它的原因,您需要在标签的使用之外声明这个变量 - 或者根本不使用标签,因为这在 C# 中不是通常的做法
- 3 回答
- 0 关注
- 212 浏览
添加回答
举报