在 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();

现在我的问题是,就性能和良好实践而言,哪一个是要走的路。哪一个会减少类耦合?

在 C# 中使用扩展方法而不是实例方法的缺点

我从来没有找到使用静态扩展的特别好的理由,因为这样做(如果其他人正在处理代码库(对他们来说有点混乱,因为有几个地方可以在给定类上查找方法声明。

但是,对不属于您的东西进行静态扩展(例如,向字符串添加新方法以使其成为标题大小写(很有意义。

所以我会说如果可能的话要避免它,但如果你觉得需要或没有能力编辑类本身,那么创建扩展并确保其他人知道它。

性能影响可以忽略不计。