0

クラス A とクラス B の 2 つのクラスがあります。クラス A には、クラス B のインスタンスを作成し、そのインスタンスを使用してパブリック メソッドを呼び出すメソッドがあります。

B obj = new B();
obj.DoSomething();

これでクラス B の DoSomething() メソッドにループができました。

public void DoSomething()
{
    for(int i=1;i<=10;i++)
    {
       //Do some task
       //call a method of class A for this iteration
    }
}

これを行う最善の方法は何ですか?DoSomething() メソッドでクラス A のインスタンスを作成してからクラス A のメソッドを呼び出すと、循環参照につながりますか? これは正しい方法ですか?

4

2 に答える 2

1

問題は、が の依存関係であるか、またはAの依存関係であるかが明確でないことです。まず、この側面を定義する必要があると思います。これを明確に念頭に置くことで、クラスの設計はより自然で流暢になります。BBA

たとえば、インスタンスを使用する必要がある場合は、クラスにDoSomething()メンバーBを配置できます。AAB

public class B
{
    private A _aInstance;

    public B(A aInstance)
    {
        this._aInstance = aInstance;
    }

    public void DoSomething()
    {
        for(int i=1;i<=10;i++)
        {
           //Do some task
           _aInstance.DoSomethingOther();
        }
    }
}
于 2013-10-18T13:43:05.880 に答える
0

thisプログラム ロジックに応じて、キーワードを使用してクラス A の現在のインスタンスへの参照を渡すことができます。

または、ループがクラス A になるようにプログラム ロジックを変更します。ループはクラス B のメソッドを呼び出します。その後、クラス A の呼び出し元のメソッドが、反復に適したメソッドを呼び出します。

于 2013-10-18T10:10:56.623 に答える