我需要设计自己的自定义GenericCollection类.现在我有很多选择使用以获得它IEnumerable,ICollection和IList,在后来提供了一些附加功能.
我很困惑,如果我和我一起去,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>但是如何与一些强有力的理由一起使用呢?
我已经审查了一些现有的帖子,但没有提供所需的信息.
几个月前我在 VBA 中发现了一个错误,但找不到合适的解决方法。这个错误真的很烦人,因为它限制了一个很好的语言功能。
使用自定义集合类时,通常希望有一个枚举器,以便可以在For Each循环中使用该类。这可以通过添加以下行来完成:
Attribute [MethodName].VB_UserMemId = -4 'The reserved DISPID_NEWENUM
Run Code Online (Sandbox Code Playgroud)
紧接在函数/属性签名行之后:
'@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) 我的目标是UICollectionView使用如下所示的布局创建一个.

这可能不创建自定义UICollectionViewLayout吗?
64-bit ×1
c# ×1
enumeration ×1
excel ×1
icollection ×1
ienumerable ×1
ilist ×1
ios ×1
iphone ×1
swift ×1
vba ×1