何时使用!()或!=如果不为null

Nic*_*ray 21 c# coding-style

虽然重构代码我改变了所有if not null条件,以遵循我的代码中的多数约定

if (!(foo == null))
Run Code Online (Sandbox Code Playgroud)

代替

if (foo != null)
Run Code Online (Sandbox Code Playgroud)

这两种说法都有什么优势吗?

在c#中的任何一个语句中都有任何优势吗?

Ode*_*ded 30

我发现第二个更具可读性.

除此之外,没有区别.

与团队一起选择约定并在任何特定代码库中坚持使用它更为重要.


Jon*_*eet 10

假设你没有破坏==/ !=运算符重载,我只是使用第二种形式以获得简单/可读性.如果你确实已经破坏了重载,那么两者之间存在语义差异,那么我建议修复那些重载:)

在极少数情况下,foo == null某些东西更明确,我可能会重构它以使用局部变量:

bool somethingIsMissing = foo == null;
if (!somethingIsMissing)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

圆形围绕foo == null现在是可选的 - 根据品味使用或不使用.主要的是你可以使用变量名来使语义清晰.


bal*_*dre 6

例如,通常if (!(foo == null))在您需要考虑更多变量时使用

if (!(f1 == 'a' && f2 != 'b'))
Run Code Online (Sandbox Code Playgroud)

有时这种方式更容易将所有内容转换为相反的方式,特别是在使用按位运算符时.

  • 在那种情况下,我可能会使用`if(f1!='a'|| f2 =='b')`来更清楚. (5认同)

Rik*_*Rik 5

第一个使用两个运算符,第二个使用一个.从技术上讲,第二个更简单.