the*_*eGD 1 .net c# vb.net class data-structures
可能重复:
C#:结构与类
我正在创建一个库,它相对较小,需要一个包含MP3文件标签的数据库.
我知道如果我有固定大小的数据,如整数,双打等,最好坚持使用结构......但在我的情况下,我有字符串和列表,包含字符串甚至其他结构...如果我会去结构,它看起来像这样:
Public Structure STitle
Dim Title As String
Dim Path As String
End Structure
Public Structure SAlbum
Dim Album As String
Dim Songs As List(Of STitle)
End Structure
Public Structure SArtist
Dim Artist As String
Dim Albums As List(Of SAlbum)
End Structure
Run Code Online (Sandbox Code Playgroud)
然后,我会有这样的事情:
Public SongLibrary As New List(Of SArtist)
Run Code Online (Sandbox Code Playgroud)
字符串和列表使我感到困惑,特别是在速度方面.因为我会搜索很多歌曲,所以我想确保使用最快的歌曲.
我也对拳击和拆箱感到困惑.我假设字符串列表只包含指向"字符串"的指针,并且结构相同(试图考虑低级别).但是,我不知道是否因为大小无法确定(或者是?)而无法进行装箱,这会减慢搜索速度(不使用arraylists的原因).
那么选择哪一个?类或结构?还是还有其他更适合的东西?
我知道如果我有固定大小的数据,如整数,双精度等,最好坚持使用结构
你怎么知道?根据我的经验,创建自定义值类型很少是一个好主意.它确实发生了 - 例如,我的Noda Time项目中有很多 - 但通常我会保持警惕.在暴露可变结构之前我也会非常谨慎.
我也对拳击和拆箱感到困惑.我假设字符串列表只包含指向"字符串"的指针,并且结构相同(试图考虑低级别).
对于结构,没有指针(引用).例如,List(Of Integer)用一个实现A. Integer()该数组直接包含值.使用通用集合,不需要装箱.
有关更多信息,请参阅类设计指南,但基本上我默认使用类,除非我有一个非常有说服力的理由来创建结构.