C#中最好的"不是"语法

Jer*_*xon 8 c# syntax wpf

对我来说很重要的是我的语法不会让其他开发人员感到困惑.

在这个例子中,我需要知道参数是否是某种类型.

我以前打过这个; 什么是最优雅,最清晰的测试方法"不是"?

方法1:

void MyBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    if (!(e.parameter is MyClass)) { /* do something */ }
}
Run Code Online (Sandbox Code Playgroud)

方法2:

void MyBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    if (e.parameter is MyClass) { } else { /* do something */ }
}
Run Code Online (Sandbox Code Playgroud)

方法3:

void MyBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    var _Parameter = e.parameter as MyClass;
    if (_Parameter != null) { /* do something */ }
}
Run Code Online (Sandbox Code Playgroud)

方法4:

void MyBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    var _Type = typeof(MyClass);
    switch (e.parameter.GetType())
    { 
      case _Type: /* do nothing */; break;
      default: /* do something */; break;
    }
}
Run Code Online (Sandbox Code Playgroud)

[编辑]方法5:

void MyBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    if ((e.parameter is MyClass) == false) { /* do something */ }
}
Run Code Online (Sandbox Code Playgroud)

哪种方式最直接?

小智 15

这显然是个人意见和风格的问题,所以没有正确的答案,但我认为这是最清楚的:

void MyBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    if ((e.parameter is MyClass) == false) { /* do something */ }
}
Run Code Online (Sandbox Code Playgroud)

== false仅仅是更明显比!

  • +1:我整天都能读出这样清晰的代码:o) (2认同)

小智 3

如果您稍后需要该变量,我会选择 3;如果您不需要该变量,我会选择 1。2 由于空块而很难看。

但我认为它们都是直截了当的。