当前位置: 首页 > 知识库问答 >
问题:

方法应该返回什么ReadOnlyCollection类型?

濮俭
2023-03-14

我看过返回IList vs ICollection vs Collection以及它链接的其他问题,但我仍然对这个问题感到困惑。

出于演示目的,我们假设我有一个类,在其中公开了一个公共方法,如下所示:

public ReadOnlyCollection<Type> GetReadOnlyCollection(IEnumerable<Type> enumerable)
{
    List<Type> list = enumerable.ToList();
    return new ReadOnlyCollection<Type>(list);
}

要遵循CA1002,我的方法应该返回实际的集合类(ReadOnlyCollectionCollection等)或它们的接口(IListICollection等),如果我希望返回ReadOnlyCollection具体?

共有2个答案

那博瀚
2023-03-14

我最初的问题不是很明确;应考虑以下几点:

    < li >用户是否只需要枚举代码?如果是这样的话,< code>IEnumerable可能就足够了。 < li >用户是否应该知道该集合是只读的?如果是这样的话,< code>IReadOnlyCollection可能就可以了。 < li >是否要防止用户将您的只读集合强制转换为可变类型?如果是这样,使用来自< code>System的不可变集合。不可变的。

以下问题提供了一些有用的答案:

    < li >用于公开成员集合的ReadOnlyCollection或IEnumerable? < Li > IEnumerable vs IReadonlyCollection vs readonly collection用于公开列表成员
印辉
2023-03-14

如果您返回尽可能通用的类型,您将获得以后更改实现的灵活性。但是当然,您必须返回对消费者有用的类型。因此,通常返回接口类型更好,也可以返回更通用的类型,只要这不会在消费者端的使用中造成任何问题。

 类似资料:
  • 问题内容: 由于在Java中使用了泛型,我最终不得不实现一个具有as返回类型的函数: 并且编译器要求我返回 一些东西 。现在我只是返回,但是我想知道这是否是好的编码实践… 我问的是 V oid,而不是 V oid。类, 而不是 保留关键字。 我也试过,,,,没有回报可言,但都不会在所有的工作。(出于或多或少明显的原因) 那么,如果函数的返回类型为,我应该返回什么呢? 该课程的一般用途是什么? 问题

  • 考虑以下代码: Typescript引发错误:。 但是如果我正在进行基于浏览器的开发,使用感觉是错误的。哪个是正确的类型定义或返回类型,可以让在不求助于声明的情况下工作?

  • 问题内容: 在oracles 网站上的Java API中:“ compareTo返回:”如果参数字符串等于此字符串,则值为0;否则为0。如果此字符串在字典上小于字符串参数,则小于0的值;如果该字符串在字典上大于字符串参数,则该值大于0。 这是一个if语句: 由于字符串a在字典上较大,因此返回true。 我的问题是,compareTo总是返回0、1或-1吗?还是返回字符串大于或小于字符串参数的实际

  • 当某个对象具有装箱类型属性时,该属性的getter返回。但是这应该返回,因为boxed type属性的默认值是。这里有什么问题?

  • 问题内容: 我莫名其妙地迷糊了自己。 不知何故,我想到用AJAX(如$ .post)打PHP时,您必须回显“ true”或“ false”,而不是返回true / false。我现在知道不是这种情况,但是有人可以为我分解吗? 测试布尔值是否存在问题?像这儿 那是有问题的情况,对吗?在这里,我不能返回true / false,而是必须回显一个字符串并测试该字符串,是吗? 但是我看到布尔true /

  • 本文向大家介绍什么是方法的返回值?返回值在类的方法里的作用是什么?相关面试题,主要包含被问及什么是方法的返回值?返回值在类的方法里的作用是什么?时的应答技巧和注意事项,需要的朋友参考一下 方法的返回值是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。 返回值的作用: 接收出结果,使得它可以用于其他的操作!