我正在忙着学习C#,C#的集合是值类型还是引用类型?因为数组是引用类型,我也知道字符串是引用类型。
谢谢。
我正在忙着学习C#,C#的集合是值类型还是引用类型?因为数组是引用类型,我也知道字符串是引用类型。
谢谢。
struct MyCollection<T> : IEnumerable<T>
),但几乎没有用处(因为您可以将其设置为只读,这样很简单,或者您可以尝试使其可变,但是要使其“值类型”可复制,以便集合的副本是与原始集合不同的实体,这将非常困难)(请注意,它仍然几乎没有用处,因为如果您通过其接口使用值类型,通常会对其进行装箱)。因此,最终不建议使用它。List<>
、ArrayList
、Dictionary<,>
等。struct
)System.ArraySegment<>
是一种集合类型!例如,您可以通过new ArraySegment<string>(new[] { "a", "b", "c", "d", "e", }, 2, 3)
进行foreach
循环。这个结构体只是保存对数组的引用(数组是可变的引用类型)。由于它是浅复制,所以按值复制没有问题。仅复制引用是因为值语义。因此,在某些包装其他内容的情况下,拥有struct
类型的集合类型是有意义的。 - Jeppe Stig Nielsen