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# 等强类型语言中,需要显式声明变量。这有助于编译器捕获可能由拼写错误或一般开发错误引起的错误。例如,如果您有一个变量arrPanel089,您/编译器如何知道它是否已被声明?当来自弱类型语言时,强类型似乎是一种约束,但它确实是一个很棒的工具,可以为开发人员省去很多麻烦。

如果您想创建一组面板,请将它们存储在数组/列表/等中并通过它们的索引访问它们。如果您想给它们一个键,请将它们存储在一个字典中,这样您就可以通过键访问值。

于 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 回答