好的,我有这段代码:
int arrPanelsRequired = 4;
string airport;
int arrPanelsMade = 0;
for (; arrPanelsMade <= arrPanelsRequired; arrPanelsMade++)
{
Panel arrPanelXXX = new Panel();
我需要将XXX
替换为arrPanelsMade
的值。我找到了几种在变量值之后命名对象的方法,但是,我无法在这里应用任何一个:(
答案 0 :(得分:2)
我认为这不是一个好主意,更不用说在C#中了。我可以看到许多arr
前缀,这导致我使用数组。我想你可能正在寻找这样的东西:
int arrPanelsRequired = 4;
Panel[] panels = new Panel[arrPanelsRequired];
for (int arrPanelsMade = 0; arrPanelsMade < arrPanelsRequired; arrPanelsMade++)
{
panels[arrPanelsMade] = new Panel();
}
答案 1 :(得分:1)
你要做的是不好的做法。它传递的是弱类型语言,但在强类型语言(如C#)中,需要显式声明变量。这有助于编译器捕获可能由错别字或一般开发错误引起的错误。例如,如果您有一个变量arrPanel089
,您/编译器如何知道它是否已被声明?当来自弱类型语言时,强类型看起来像是一个约束,但它确实是一个很好的工具,可以为开发人员节省大量的麻烦。
如果要创建一组面板,请将它们存储在数组/列表/ etc中,然后按索引访问它们。如果您想给他们一个密钥,请将它们存储在一个字典中,该字典允许您通过密钥访问值。
答案 2 :(得分:1)
您应该将面板添加到List或数组中,然后通过索引访问它们:
arrPanel = new Panel[arrPanelsRequired];
for( int idx = 0 ; idx < arrPanelsRequired ; idx++)
arrPanel[idx] = new Panel();
答案 3 :(得分:1)
你在这里发生了一些引发红旗的事情。我会稍微偏离你的问题,因为我认为你可能会在几个方面走错路。
删除“arr”前缀,只需调用变量即可 - 不要试图模仿Hungarian Notation,除非你有充分的理由这样做。
如果您不打算在循环标题中执行初始化,请考虑使用while
循环而不是for
循环。
现在回答你的问题。不,语言不能那样工作。请改用List<Panel>
课程。这将允许您动态添加更多面板,而无需预定义您想要的数量,例如在数组中。