C#替换宏吗?

时间:2011-07-28 22:25:00

标签: c# macros

我正在尝试在我的代码中定义10个面板,但绝对不想做

public panel1();
public panel2();
etc....

快速谷歌搜索告诉我c#中没有宏。是否有某种类型的数组我可以定义用来代替宏,或者其他一些方法我可以处理它?<​​/ p>

4 个答案:

答案 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();
}

这将使您的代码的意图更加清晰。