gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:09:28 24 4
gpt4 key购买 nike

假设我有一个名为 Building 的类。这是在程序开始时创建的。我需要对 Building 类的变量执行数百 操作。现在我有两个选择。

1.用方法定义各种类并将Building传递给它们

class StoryService
{
private readonly Building building;

public StoryService(Building building)
{
this.building = building;
}

public void AddStory() {}
}

2.定义Building的扩展方法

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# - 在 C# 中使用扩展方法而不是实例方法的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27573660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com