所以我对C#非常陌生,我知道引用类型是存储对内存中其他地方的对象的引用的类型(通常在堆上)。我的问题是,如果我有一个包含其他类作为其成员变量的类,这些类成员变量是否也存储引用?我这么问是因为很多时候你只是希望你的类成员变量被绑定到它们所拥有的对象的生命周期,而让这些成员变量在内存中的其他地方存储对对象的引用是没有意义的。在查找这些变量的值时,这只会增加不必要的间接性。现在我知道解决这个问题的一种方法是使这些成员变量成为结构,但如果这些成员变量需要继承或其他仅限类的特性怎么办?任何洞察力都是值得欣赏的。
发布于 2017-03-21 00:55:53
很多时候你只想让你的类成员变量绑定到它们所拥有的对象的生命周期
成员变量与所属对象的生命周期相关联。一旦您拥有的对象实例被垃圾收集--只要不存在对其成员对象的其他引用--它们也将有资格进行垃圾收集。
随着您对语言和这些概念越来越熟悉,我想您会发现在几乎所有情况下使用引用类型都是非常可取的。在有限的几种情况下,您可能希望定义一个值类型,如结构,而不是类,并且选择结构而不是类的决定与类实例的生命周期无关。参见MSDN for guidance on choosing between a class and a struct。
发布于 2017-03-21 01:15:58
我的问题是,如果我有一个包含其他类作为其成员变量的类,这些类成员变量是否也存储引用?
是
...you只是希望您的类成员变量与其拥有的object...one的生命周期绑定在一起,也就是让这些成员变量成为结构体,但如果这些成员变量需要继承或其他仅限类的特性怎么办?
当不再有对所有对象的引用时,所有对象都被标记为垃圾回收,因此您只需使用类而不是结构。与类相比,结构是一种稀有的类型。
https://stackoverflow.com/questions/42909408
复制相似问题