标签: custom-collection

使用IEnumerable和ICollection与IList的自定义集合

我需要设计自己的自定义GenericCollection类.现在我有很多选择使用以获得它IEnumerable,ICollectionIList,在后来提供了一些附加功能.

我很困惑,如果我和我一起去,IEnumerable<T>我可能需要声明对象实际上像这种情况一样持有集合_list.

public class GenericCollection<T> : IEnumerable<T>
{
    private List<T> _list;
    //...
}
Run Code Online (Sandbox Code Playgroud)

但是如果我使用ICollection<T>或者IList<T>,我不需要声明List对象,因为它是隐式可用的.

public class GenericCollection<T> : IList<T>
{
    // no need for List object
    //private List<T> _list; 
    //...
}
Run Code Online (Sandbox Code Playgroud)

这两种方法在性能方面有何不同?

在哪种情况下,每个人都是首选,特别是在设计自己的集合时.我对轻量级收藏感兴趣,性能良好.我认为这可以通过使用,IEnumerable<T>但是如何与一些强有力的理由一起使用呢?

我已经审查了一些现有的帖子,但没有提供所需的信息.

返回'IList'与'ICollection'对比'收集'

c# ienumerable ilist icollection custom-collection

21
推荐指数
1
解决办法
2万
查看次数

x64 自定义类上的 For Each 枚举错误

几个月前我在 VBA 中发现了一个错误,但找不到合适的解决方法。这个错误真的很烦人,因为它限制了一个很好的语言功能。

使用自定义集合类时,通常希望有一个枚举器,以便可以在For Each循环中使用该类。这可以通过添加以下行来完成:

Attribute [MethodName].VB_UserMemId = -4 'The reserved DISPID_NEWENUM
Run Code Online (Sandbox Code Playgroud)

紧接在函数/属性签名行之后:

  1. 导出类模块,在文本编辑器中编辑内容,然后重新导入
  2. 在函数签名上方使用Rubberduck注释'@Enumerator然后同步

不幸的是,在 x64 上,使用上述功能会导致写入错误的内存并在某些情况下导致应用程序崩溃(稍后讨论)。

重现错误

CustomCollection 班级:

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "CustomCollection"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Private m_coll As Collection

Private Sub Class_Initialize()
    Set m_coll = New Collection
End Sub
Private Sub Class_Terminate()
    Set m_coll = Nothing
End …
Run Code Online (Sandbox Code Playgroud)

excel 64-bit vba enumeration custom-collection

20
推荐指数
1
解决办法
612
查看次数

具有不同单元大小的UICollectionView

我的目标是UICollectionView使用如下所示的布局创建一个.

这可能不创建自定义UICollectionViewLayout吗?

iphone ios uicollectionview custom-collection swift

6
推荐指数
2
解决办法
6062
查看次数