返回实例
本文关键字:实例 返回 | 更新日期: 2023-09-27 18:33:58
可能看起来是一个愚蠢的问题,但我可以返回一个实例吗?例:
public class EcranJeu : AffichageJeu
{
public EcranJeu(string choixecran)
{
if (choixecran == "0")
{
KystExtract décor = new KystExtract();
}
if (choixecran == "1")
{
KystExtraction décor = new KystExtraction();
}
}
public override void LoadContent()
{
décor.LoadContent(content);
}
}
据说décor
不存在。我怎样才能把它传递给所有班级的LoadContent
、Update
和Draw
?
如果我理解正确,您只想在构造函数中创建一个实例成员并在 LoadContent、Update 和 Draw 中访问它?
public class EcranJeu : AffichageJeu
{
private KystExtract décor;
public EcranJeu(string choixecran)
{
if (choixecran == "0")
{
décor = new KystExtract();
}
if (choixecran == "1")
{
décor = new KystExtraction();
}
}
public override void LoadContent()
{
décor.LoadContent(content);
}
}
如果要从其他实例访问属性,而不是创建 getter 和 setter 或声明属性 public。
private KystExtract _décor;
public public string décor
{
//set the person name
set { this._décor = value; }
//get the person name
get { return this._décor; }
}
另一个答案只是部分正确。
问题:您正在创建两个不同类之一的对象,稍后想要在所选对象上调用 LoadContent()
、Draw()
或Update()
方法。
我必须假设这两个类KystExtract
和KystExtraction
具有公共基类或共享接口。如果没有,您将需要创建/添加一个(例如 KrystBase
或 IKryst),用于定义LoadContent()
方法。
然后,存储的属性为基类类型/接口,因此它可以保存KystExtract
对象或KystExtraction
对象。
您的代码将如下所示(假设您没有公共基类并使用接口):
public class EcranJeu : AffichageJeu
{
private IKystObject décor; // for example
public EcranJeu(string choixecran)
{
if (choixecran == "0")
{
décor = new KystExtract();
}
if (choixecran == "1")
{
décor = new KystExtraction();
}
}
public override void LoadContent()
{
décor.LoadContent(content);
}
}
// Common interface for classes requiring shared behavior
public interface IKystObject
{
public override void LoadContent();
public override void Update();
public override void Draw();
}
// Both classes implement your common interface
public class KystExtract : IKrystObject
{
... Implementation of LoadContent, Update and Draw
}
// Both classes implement your common interface
public class KystExtraction : IKrystObject
{
... Implementation of LoadContent, Update and Draw
}