1

ばかげた質問に見えるかもしれませんが、インスタンスを返すことはできますか?例:

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存在しないと言われています。どうすればそれをLoadContentUpdateそしてDrawすべてのクラスに渡すことができますか?

4

2 に答える 2

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);
    }
}

ゲッターとセッターを作成するか、プロパティをパブリックとして宣言する以外のインスタンスからプロパティにアクセスする場合。

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; }
}
于 2012-05-13T20:36:05.520 に答える
2

あなたが見つけたように、他の答えは部分的にしか正しかった。

問題: 2つの異なるクラスのいずれかのオブジェクトを作成していて、後で選択したオブジェクトに対して、、またはメソッドを呼び出しLoadContent()たい場合Draw()Update()

KystExtract2つのクラスを想定し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
}
于 2012-05-14T15:01:07.933 に答える