在 C# 中使用扩展方法而不是实例方法的缺点
本文关键字:实例方法 缺点 方法 扩展 | 更新日期: 2023-09-27 18:34:42
假设我有一个名为 Building
的类。这是在程序开始时创建的。我需要对 Building 类的变量执行数百个操作。现在我有两个选择。
1.用方法定义各种类,并将构建传递给它们
class StoryService
{
private readonly Building building;
public StoryService(Building building)
{
this.building = building;
}
public void AddStory() {}
}
2.定义建筑物的扩展方法
static class StoryExtensionMethods
{
public static void AddStory(this Building building) {}
}
现在在我的应用程序中:
var building = new Building();
// Method 1
var storyService = new StoryService(building);
storyService.AddStory();
// Method 2
building.AddStory();
现在我的问题是,就性能和良好实践而言,哪一个是要走的路。哪一个会减少类耦合?
我从来没有找到使用静态扩展的特别好的理由,因为这样做(如果其他人正在处理代码库(对他们来说有点混乱,因为有几个地方可以在给定类上查找方法声明。
但是,对不属于您的东西进行静态扩展(例如,向字符串添加新方法以使其成为标题大小写(很有意义。
所以我会说如果可能的话要避免它,但如果你觉得需要或没有能力编辑类本身,那么创建扩展并确保其他人知道它。
性能影响可以忽略不计。