如果在这里发布了类似的问题,我很抱歉。我无法在任何地方找到这个答案,但如果我知道要搜索哪些关键词,也许我可以拥有。
我试图在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);
答案 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