c# - 从操作方法返回最具体或最通用的类​​型更好吗?

标签 c# asp.net-mvc return-type actionmethod

<分区>

两者的好处或坏处是什么?

最佳答案

我的指导方针一直是最具体的,最笼统的。

您的数据类型越通用,使用它的代码对数据类型的了解就越少。例如,如果一个方法返回一个集合,我将返回该方法生成的新创建的集合。如果它返回一个内部数据结构,我会把它提高到 IEnumerable<T> .

但是,如果它返回一个数组,或者一个 List<T>因为这是它在内部构建的内容,所以获取您的数据的代码现在可以访问您的集合的更多功能。

另一方面,返回最通用(在限制范围内)的数据类型意味着您总是返回 IEnumerable<T>或类似的所有集合,即使该方法在内部构建了一个新数组并返回了它。调用代码现在必须手动将集合的内容复制到新的数组或列表中,如果调用代码需要使用的话。

这意味着更多,在大多数情况下,不必要的工作。

至于输入,我选择我可以使用的最通用的类​​型,所以对于集合,除非我特别需要一个数组或列表或类似的,否则我会接受 IEnumerable<T> .通过这样做,我确保调用代码要做的工作更少。这可能意味着我必须在内部做一些工作,所以这是一种权衡。

重要的是要达到平衡。每次都不要太笼统或太具体。找出有意义的正确类型,并考虑调用代码必须执行哪些操作才能将数据传入或接受来自代码的传出数据。工作越少越好。

关于c# - 从操作方法返回最具体或最通用的类​​型更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434367/

相关文章:

c# - 在 winforms 中取消工作线程

asp.net-mvc - 我可以在 OWIN 中启用跟踪吗?

javascript - 使用 MVC Form Post 发送 HTML 字符串

c++ - 如何确定模板中函数的返回类型

c# - 有没有办法让两个触发游戏对象发生碰撞?

c# - 基于属性选择的 LINQ 查询

c# - AutoMapper - 在 View 模型中映射子集合

objective-c - 为什么 [NSDate distancePast] 和 [NSDate distanceFuture] 方法返回 id?

c++ - 虚函数的不同返回类型

c# - Discord.NET 如何授予用户角色?