在循环中命名变量

时间:2016-06-10 18:53:31

标签: c#

如果在这里发布了类似的问题,我很抱歉。我无法在任何地方找到这个答案,但如果我知道要搜索哪些关键词,也许我可以拥有。

我试图在for循环中命名变量或找到另一种方法来解决我的问题。这是我想要做的一个例子。

for (int i = 0; i < 100; i++)
{
    string strName = "ImportedBody" + (i+1).ToString();
    IBody strName = model.GetEntity(strName) as IBody;
}

基本上,我的目标是缩短:

IBody ImportedBody1 = model.GetEntity("ImportedBody1") as IBody;
IBody ImportedBody2 = model.GetEntity("ImportedBody2") as IBody;
IBody ImportedBody3 = model.GetEntity("ImportedBody3") as IBody;
IBody ImportedBody4 = model.GetEntity("ImportedBody4") as IBody;
IBody ImportedBody5 = model.GetEntity("ImportedBody5") as IBody;
IBody ImportedBody6 = model.GetEntity("ImportedBody6") as IBody;
...
IBody ImportedBody100 = model.GetEntity("ImportedBody100") as IBody;

进入for循环或者更快写入的东西。

如果这是一个问题,名称也可能会改变。例如:

IBody ImportedBody1a = model.GetEntity("ImportedBody1") as IBody;
IBody ImportedBody2a = model.GetEntity("ImportedBody2") as IBody;
IBody ImportedBody3a = model.GetEntity("ImportedBody3") as IBody;
IBody ImportedBody4a = model.GetEntity("ImportedBody4") as IBody;
IBody ImportedBody5a = model.GetEntity("ImportedBody5") as IBody;
IBody ImportedBody6a = model.GetEntity("ImportedBody6") as IBody;
...
IBody ImportedBody100a = model.GetEntity("ImportedBody100") as IBody;

以下是关于该计划应该做什么的一些注释。我正在编写的程序正在与CAD程序进行交互。如果我将几何体导入CAD,那么我有一个名为“ImportedBody1,ImportedBody2,ImportedBody3等”的实体列表。为了在我的c#程序中编辑该体,我必须使用以下命令从CAD程序中获取:

IBody Name = model.GetEntity(StringNameAsLabeledWithinCAD) as IBody;

现在我可以做一些改变方向的事情:

Name.SetNormalDirection(0, 1, 0);

1 个答案:

答案 0 :(得分:3)

  

我试图在for循环中命名变量

简单的答案是......不要。

这是集合(数组,列表等)的工作,而不是单个变量。也许就像这样简单:

var importedBodies = new List<IBody>();
for (int i = 1; i <= 100; i++)
{
    var name = string.Format("ImportedBody{0}", i);
    var body = model.GetEntity(name) as IBody;

    importedBodies.Add(body);
}

在此之后,您将拥有一个名为importedBodies的集合,其中包含您的100个实例。您可以直接引用具有索引的特定索引,例如:

importedBodies[10] // The 11th imported body

或者您甚至可以查询数据以根据其他标准查找元素:

importedBodies.Where(b => b.SomeProperty = "some value") // or any other expressions to query/transform the values