如果出现以下任一情况,应使用扩展方法: 需要在类型上定义一个方法,但您不拥有该类型的源代码。 需要在类型上定义一个方法,您拥有源代码,且该类型是接口。 需要在类型上定义一个方法,您拥有源代码,但添加该方法会创建不必要的耦合。 否则,应使用实际类型本身的真正方法。我认为对于您拥有源代码的类或结构体来说,创建扩展方法没什么意义 - 为什么要使用扩展方法来混淆读者,而普通的方法就足够了呢?建议阅读:框架设计准则:扩展方法 * 假设您想向一个类型添加方便的方法,但又不想创建与不应成为API一部分的程序集或类型的依赖关系。您可以使用扩展方法来管理此过程。
尝试这个Stackoverflow帖子,了解有关扩展方法最佳实践的讨论。 从我的角度来看,当我有很多特定类型的实用函数时,我使用扩展方法。 我发现... string.ExtensionMethod(); 看起来比较干净... StringHelper.ExtensionMethod("string to do something with");