【问题标题】:C# Suggestion Convert to '|=' expressionC# 建议转换为 '|=' 表达式
【发布时间】:2015-04-13 13:31:15
【问题描述】:

好的,如果这是一个愚蠢的问题,我深表歉意,但我无法通过 google 搜索找到我正在寻找的内容,而且我不知道还能去哪里。我正在编写一些 C# 代码,并有一个简单的 if 语句查看 2 个布尔值。

if(a && !b)
    do something

我正在使用 MonoDevelop 或 Xamarin Studio 或其他任何名称,它在蓝色下划线了 if 并且弹出窗口显示:建议:转换为 '|=' 表达式。我不是一个没有经验的程序员,但我认为我以前从未见过 |= 并且我不知道这意味着什么或这个建议意味着什么,如果它实际上甚至是有效的.有愿意给我介绍的吗?感谢您的帮助。

因为其他人的要求而修改了一些内容 真正的代码远不止这些。本质上是

if(a && !b)
    c = true;

由于我使用三个不同的变量,我不太确定如何使按位快捷运算符在这里工作,但是按位运算是我能力的一个巨大不足。但这正是该建议在带下划线的 if 中所说的。

【问题讨论】:

  • 我很难相信这一点。你能发布整个if,包括do something 部分吗?
  • 符号猎犬?谢谢。没听说过,但看起来很有帮助。
  • 就像 += 或 -=。
  • 好吧,我确实给了你符号猎犬的建议 :) 但是,我仍然认为这里有些人想知道你为什么得到这个建议(包括我)。如果您添加有关要转换的内容的详细信息,这可能是一个有效的问题。

标签: c# monodevelop xamarin-studio


【解决方案1】:

这是一个按位 OR 和赋值。 a |= b 等价于a = a | b

【讨论】:

  • 这只是回答部分问题 - OP 还在询问为什么他会收到转换现有表达式的建议。
  • @Default 这将需要有关所使用的确切语句的更多详细信息。
  • 不,这就是我要问的。当然,我不知道为什么我没有想到按位运算符。我很少与他们打交道,以至于我从没想过他们。正如我所说,愚蠢的问题。非常感谢您的帮助。我会在 10 分钟内将您的答案标记为已接受。虽然也许模组更愿意删除它。
【解决方案2】:

您可以查看处理这种情况的代码以了解更多详细信息。

MonoDevelop(以及几乎所有 Xamarin Studio(移动插件除外))都是开源的。

https://github.com/icsharpcode/NRefactory/blob/master/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ConvertIfToOrExpressionIssue.cs

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多