据我所知,在C#中,一个类总是通过引用传递。但这是否意味着当我将所述类存储在List中时,它也被存储为引用,或者更好地表示为C#style"指针"各种各样的?这是否也意味着具有该类的N个元素的列表不会占用类的大小N倍的内存,但只占该类引用大小的N倍?
或者我只想到这一切都错了?
答案 0 :(得分:0)
你基本上是对的。
如果我创建了T类的N个元素,而T类使用了10个字节,则需要10 * N个内存。
如果我将其存储在List<T>
中,我们仍然有10 * N内存用于对象,加上C#引用大小的N倍和List
开销。如果我将这些相同的元素存储在两个列表中,那么对象的10 * N加上参考的2 * N,列表开销的2倍。他们指向相同的底层对象。