1

B と D の 2 つのクラスがあります。タイプ B の 2 つとタイプ D の 2 つの 4 つの要素を持つ配列を作成する必要があります。どうすればよいですか?

B o1 = new B();
D o2 = new D();
B o3 = new B();
D o4 = new D();

配列は次のようになります。

array[0] = o1; array[1] = o2; array[2] = o3; array[3] = o4;
4

3 に答える 3

14

オブジェクト以外に共通の基本クラスがない場合は、次のものが必要です。

object[] array = new object[4];
array[0] = o1;
// etc

またはシングルショットで:

object[] array = { o1, o2, o3, o4 };

B または D に固有のメンバーを使用するには、配列から値を取得するときにキャストする必要があります。

B b = (B) array[0];
b.SomeMethodDeclaredOnB();

B と D に共通のメソッドがある場合、両方のクラスが実装するインターフェイスでそれらを宣言し、配列の型を変更できます。

IBD[] array = new IBD[4];
array[0] = o1;
...
array[0].SomeMethodDeclaredInIBD();

または:

IBD[] array = { o1, o2, o3, o4 };
...
array[0].SomeMethodDeclaredInIBD();

最後に、これに対処するには:

私はC#が初めてです。私はそれが好きではありませんが、私はそれを学ばなければなりません。PHP では、10000 倍簡単です。

PHP を使用しようとすると、まったく逆の方向で同じ経験が得られると確信しています。C# が PHP よりも「劣っている」または「難しい」と思い込まないでください。単に異なるだけであり、「コンフォート ゾーン」言語よりも慣れていない言語を使用する方が難しいと感じるはずです。

于 2013-06-28T08:36:35.320 に答える
4
  • or use array object[] array of objects

  • or more OOP approch:

    public class B : IHolder { }

    public class D : IHolder { }

IHolder[] arrays of IHolders

于 2013-06-28T08:37:40.987 に答える