将模式匹配变成漂亮的代码

Make pattern matching into nice code

所以..我在 WPF 中得到了这个转换器,它应该将方向作为参数。如果不是,转换器应该将方向分配给水平。

这是我的代码:

 Orientation orientation = Orientation.Horizontal;
if (parameter is Orientation)
     orientation = (Orientation) parameter;

然而,resharper 在 "is" 下摆动并建议我 "Merge cast with type check"。使用重构,它看起来像这样:

Orientation orientation = Orientation.Horizontal;
if (parameter is Orientation orientation1)
    orientation = orientation1;

其中使用了虚拟变量。

我认为我自己的创作是最好最干净的,但resharper不同意。你会怎么写这段代码?

我知道可以配置 resparper,但我最喜欢这种类型的建议。只是在处理结构时,它似乎变得疯狂了。

在我看来,R# 通过使用最新的 c# 功能使代码复杂化。您的变体非常清晰,我看不出需要更改它(只有 3 行!)

但是考虑使用 as 运算符回退到默认值(需要可空类型 Orientation?

object parameter1 = Orientation.Vertical;

Orientation o1 = (parameter1 as Orientation?) ?? Orientation.Horizontal;

object parameter2 = "Vertical";

Orientation o2 = (parameter2 as Orientation?) ?? Orientation.Horizontal;

returns

Orientation.Vertical
Orientation.Horizontal