可能看起来很愚蠢,但我可以返回一个实例吗? 例如:
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
?
答案 0 :(得分:3)
如果我理解它是正确的,你只想在构造函数中创建一个实例成员并在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; }
}
答案 1 :(得分:2)
你发现另一个答案只是部分正确。
问题:您正在创建两个不同类别之一的对象,之后想要调用LoadContent()
或Draw()
或Update()
方法选择的对象。
我必须假设两个类KystExtract
和KystExtraction
有一个共同的基类或共享一个接口。如果不是,您将需要创建/添加定义KrystBase
方法的一个(例如LoadContent()
或IKryst)。
您存储的属性是基类类型/接口,因此它可以包含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
}