返回实例

本文关键字:实例 返回 | 更新日期: 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不存在。我怎样才能把它传递给所有班级的LoadContentUpdateDraw

返回实例

如果我理解正确,您只想在构造函数中创建一个实例成员并在 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()方法。

我必须假设这两个类KystExtractKystExtraction具有公共基类或共享接口。如果没有,您将需要创建/添加一个(例如 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
}