假设我有一个名为 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/