将模式匹配变成漂亮的代码
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
所以..我在 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