我正在尝试在我的代码中定义10个面板,但绝对不想做
public panel1();
public panel2();
etc....
快速谷歌搜索告诉我c#中没有宏。是否有某种类型的数组我可以定义用来代替宏,或者其他一些方法我可以处理它?</ p>
答案 0 :(得分:2)
你的问题不太清楚;但这就是你如何在C#中定义一个Panel数组:
Panel[] panels = new Panel[10];
您可以使用初始化表达式填写面板:
Panel[] panels = new Panel[] { new Panel(), new Panel(), /* ... */ };
你更有可能想要循环某些东西并让一些逻辑创建数组 - 例如在循环中或作为LINQ表达式,例如:
Panel[] panels = Enumerable.Range(0,10).Select(n => new Panel(n)).ToArray();
答案 1 :(得分:1)
为什么不使用for
循环并用几行动态添加它们?像这样:
for (int i=0;i<10;i++)
{
Panel newPanel = new Panel();
// each time through there is a new panel to use
}
答案 2 :(得分:0)
我会使用通用列表和上面提到的for循环:
List<Panel> list = new List<Panel>();
for (int i = 0; i < 10; i++)
{
list.Add(new Panel());
}
答案 3 :(得分:0)
如果你只想要10个东西,那么你不希望你的表达混乱了循环或其他不相关的结构。
我建议使用:
var panels = 10.Of<Panel>();
...可以通过以下扩展方法实现:
public static T[] Of<T>(this int number) where T : new()
{
var items = new List<T>();
for (int i = 0; i < number; i ++)
{
items.Add(new T());
}
return items.ToArray();
}
这将使您的代码的意图更加清晰。