【发布时间】:2020-05-21 22:33:52
【问题描述】:
基类加载的内容是否在派生类中重复?
我有一个基类“GameScreen”和许多派生类(“TitleScreen”、“PlayerSetupScreen”、“GameplayScreen”等)。如果我在基类“GameScreen”中加载图形内容(所有屏幕通用),该内容是否会在每个派生屏幕的 RAM 中复制,还是只加载一次并简单引用?我假设是后者,但我只需要确定,因为我打算以这种方式加载更多内容。任何帮助将不胜感激。
我正在使用 Visual Studio 编写 C# Monogame。
【问题讨论】:
-
其实这个问题太暧昧了。然而我觉得你在两个方面都错了。类不会共享数据,除非它是静态的。如果你在一个类中加载数据,另一个类不会以任何正常意义看到它,除非你让它们都引用相同的数据
-
这确实是面向对象编程的基础知识,在这里太宽泛了。
-
基类只定义了一个type,子类从中派生出它们的定义。它与那些共享数据的类的 instances 或类似的东西无关。
-
@seesharper 当然可以。
public class A { protected object a; } public class B : A {}。字段a已共享。 -
@CodingYoshi 如果我有一个
Animal类和一个从Animal派生的Giraffe类,并且Animal有一些字段X(引用类型但没关系),那么确定,Giraffes 将有一个字段 X。但是Giraffes 的实例不与Animals 的实例共享 data - 显然! - 除了Giraffe与自己作为Animal的实例“共享”数据。
标签: c# loading monogame derived-class base-class