【问题标题】:Visual Studio C# Ignore an ErrorVisual Studio C# 忽略错误
【发布时间】:2012-03-30 16:25:44
【问题描述】:

在 C# 中有没有一种方法可以向 VS 发出信号以强制它忽略特定行上的错误?

我有一个变量 pos2,它只是在某些时候初始化(它是随机的)。但是在初始化的时候,我同时设置了一个flag。

pos2 = new Vector3(2.5F, 0.624F, 75F);
secondCar = true;

稍后在代码中(在我的标志检查之后),我正常使用 pos2,编辑器抛出错误。我经常使用这个脚本,所以我知道它没有损坏,而且由于 pos2 在标志检查之后,我知道我永远不会达到在未声明时使用 pos2 的地步。

在 Python 中,您可以使用“@UnusedVariable”或类似的东西(我不记得确切),但我的 VS 编辑器一直为此向我抛出错误,我知道它永远不会达到这种情况。

【问题讨论】:

  • 编译器没有执行足够深入的分析来可靠地检测到您只使用过 pos2 的初始化值。这需要解决停机问题。考虑使用 Nullable 摆脱 secondCar 变量。也解决了这个错误。

标签: c# visual-studio


【解决方案1】:

考虑使用Vector3? (nullable type) 而不是Vector3,因为无法抑制错误。

【讨论】:

  • 啊,这就是我要找的。我只是不知道!谢谢
【解决方案2】:

听起来您收到关于使用未分配局部变量的 CS165 错误。简单地说,没有办法压制这个消息。 C# 中的警告是可抑制的,但错误不是。

今天,代码可能确实是正确的,并且正确地使用了正确的门,例如您提到的secondCar。然而,这些逻辑门可能对下一个开发人员甚至一周后的您自己都不明显。试图在 C# 中抑制这样的有效错误只是为未来的问题打开了大门。

我建议不要在这里与编译器抗争,而是使用它。

【讨论】:

    【解决方案3】:

    您希望将变量初始化为null 或其他一些默认值。这样错误就会消失,而不仅仅是被抑制。

    【讨论】:

      【解决方案4】:

      更多详情请参见this answer,但一般情况下,您可以使用#pragma warning disable 禁用警告。

      ...我猜你的意思是警告,对吧?如果是错误,您的代码将无法编译,因此您不能忽略它。但是您可以忽略警告。如果您真的遇到错误,只需使用变量初始化器,如下所示:

      int someVariable = 0;
      YourClass someInstance = null;
      

      这样编译器就不会抱怨未初始化的变量了。

      【讨论】:

      • 我相信 OP 正在达到 CS 165,这是一个错误。对此不是 100% 确定,但问题似乎指向了这一点
      • 我完全同意你的观点,JaredPar,使用像这样的未初始化变量会导致代码无法维护。我永远不会用生产应用程序这样做。 (但我承认我已经用只为我自己和我一个人的应用程序完成了它——比如引导数据库,完成后将被丢弃。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      相关资源
      最近更新 更多