1

さて、私はこのコードを持っています:

int arrPanelsRequired = 4;
string airport;
int arrPanelsMade = 0;
for (; arrPanelsMade <= arrPanelsRequired; arrPanelsMade++)
{
    Panel arrPanelXXX = new Panel();

XXXを の値に置き換える必要がありますarrPanelsMade。変数の値にちなんでオブジェクトに名前を付ける方法をいくつか見つけましたが、ここではそれらのいずれも適用できませんでした:(

4

4 に答える 4

2

C# は言うまでもなく、一般的には良い考えではないと思います。多くのarrプレフィックスが表示され、配列の使用につながります。私はあなたがこのようなものを探しているかもしれないと思います:

int arrPanelsRequired = 4;
Panel[] panels = new Panel[arrPanelsRequired];
for (int arrPanelsMade = 0; arrPanelsMade < arrPanelsRequired; arrPanelsMade++)
{
    panels[arrPanelsMade] = new Panel();
}
于 2012-12-08T19:22:39.973 に答える
1

あなたがやろうとしていることは悪い習慣です。弱く型付けされた言語ではパスしますが、C# などの厳密に型付けされた言語では、変数を明示的に宣言する必要があります。これにより、タイプミスや一般的な開発ミスによって発生する可能性のあるエラーをコンパイラが検出できます。たとえば、 variable があるarrPanel089場合、それが宣言されているかどうかをコンパイラーはどのように知ることができますか? 厳密な型付けは、型付けが弱い言語から来ると制約のように思えるかもしれませんが、開発者としての頭痛の種を大幅に軽減してくれる優れたツールです。

一連のパネルを作成する場合は、それらを array/list/etc に保存し、インデックスでアクセスします。それらにキーを与えたい場合は、それらをディクショナリに保存して、代わりにキーで値にアクセスできるようにします。

于 2012-12-08T19:21:32.130 に答える
1

パネルをリストまたは配列に追加し、後でインデックスでアクセスする必要があります。

arrPanel = new Panel[arrPanelsRequired];
for( int idx = 0 ; idx < arrPanelsRequired ; idx++)
    arrPanel[idx] = new Panel();
于 2012-12-08T19:21:39.770 に答える
1

ここで、危険信号を発するいくつかのことが進行中です。あなたはおそらくいくつかの点で間違った道を進んでいると思うので、私はあなたの質問から少し離れます。

  1. 「arr」プレフィックスを削除し、変数をそのまま呼び出します。正当な理由がない限り、ハンガリー記法をエミュレートしようとしないでください。

  2. ループ ヘッダーで初期化を実行しない場合whileは、ループの代わりにループを使用することを検討してください。for

  3. それでは、あなたの質問に進みましょう。いいえ、言語はそのようには機能しません。List<Panel>代わりにクラスを使用してください。これにより、配列など、必要な数を事前に定義しなくても、パネルを動的に追加できます。

于 2012-12-08T19:24:04.927 に答える