我们的代码中有许多地方使用() => {}
(第三方库的方法中需要Action
参数)。
为了使代码更清晰,我创建了以下类:
public static class Empty
{
public static readonly Action Action = () => {};
}
现在好多了:
Alert.Show(title, message, Empty.Action);
问题是这种重构可能导致任何问题吗?我确定没有,但你可能知道可能的情况。或者你可能知道更好的代码改进吗?
答案 0 :(得分:3)
这种变化在技术上是可观察的:总是有可能某些代码间接比较两个new Action(() => {})
实例的相等性,以及它们以前不会比较相等的地方,现在就可以了。
例如,如果您公开public event Action X;
,则可以确保将其初始化为() => {}
,以确保它永远不会null
,并删除任何null
1}}从您的代码中检查。如果将此更改为Empty.Action
,则恶意代码可能会写X -= Empty.Action;
,从而在您自己的代码中调用NullReferenceException
来调用事件。
但是在编写良好的代码中,重构不应该有任何区别。
答案 1 :(得分:1)
这不会导致任何问题,因为它等同于定义静态方法并在程序集中多次引用它