为了账号安全,请及时绑定邮箱和手机立即绑定

c#中的标签后未分配字符串

c#中的标签后未分配字符串

C#
蝴蝶不菲 2021-12-25 16:52:55
我有一个我完全不明白的问题:在以下代码中,使用了字符串path。路径在标签前面工作,但之后未分配。令我困惑的是,所有其他变量都有效!代码:path = @"C:\incidents\jobTransfer";File.WriteAllLines(path + incident + "\\result_" + incident + ".txt", resultText.ToArray());End:;File.WriteAllLines(incident, resultText.ToArray());File.WriteAllLines(path + incident + "\\result_" + incident + ".txt", resultText.ToArray()); // issue at path in this line使用未分配的变量...我可以在标签后重新分配变量,但随后我总是必须编辑 2 行代码以备更改
查看完整描述

3 回答

?
精慕HU

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 ;-)


查看完整回答
反对 回复 2021-12-25
?
Helenr

TA贡献1780条经验 获得超4个赞

问题很可能是您的标签 - 这允许跳转到您的“结束”标签的代码路径,该标签允许不设置“路径”。

2个简单的解决方案:

  • 重新分配 "path = @"C:\incidents\jobTransfer";" 在“结束”标签之后 - 您提到的是有问题的,因为如果更改,您将有两个地方可以编辑代码。(不过,如果您在某种配置文件中对其进行参数化,则可以更改一次)。

  • 将标签放在“path”的原始分配上方并使用一些条件来跳过你的“File.WriteAllLines(path + event + "\result_" + event + ".txt", resultText.ToArray());” 如果它不想要。

更好的解决方案是根本不使用标签 - 这些通常是不受欢迎的,而您的问题是众多原因之一;尽管如此,在每个人都因为使用 goto 而跳下喉咙之前,有一些可以说是可以接受的使用它的理由


查看完整回答
反对 回复 2021-12-25
?
守着一只汪

TA贡献1872条经验 获得超4个赞

由于您使用的是 Label - 这在 C# 中不常见,此标签上方的范围本质上是一个范围,然后是另一个范围 - 因此声明的变量不再在范围内,因此这就是不再分配它的原因,您需要在标签的使用之外声明这个变量 - 或者根本不使用标签,因为这在 C# 中不是通常的做法


查看完整回答
反对 回复 2021-12-25
  • 3 回答
  • 0 关注
  • 212 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号