2016-06-10 152 views
0

如果在這裏發佈類似的問題,我很抱歉。我無法在任何地方找到這個答案,但如果我知道要搜索哪些關鍵詞,也許我可以擁有。命名一個循環內的變量

我想命名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); 
+7

這聽起來像一個收集的作業而不是個體變量。 – David

+8

只需使用一個數組或者'List '來代替。你爲什麼認爲你實際上需要100個變量? –

回答

3

我想名稱中的一個變量循環

簡單answe r是...不。

這是一個集合(數組,列表等)的工作,而不是單個變量。也許東西這麼簡單:

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 
+0

你錯過了'string.Format(「ImportedBody」,i)'的標記。我認爲你的意思是'string.Format(「ImportedBody {0}」,i)':) –

+0

@ yeah-buddy:很好,謝謝! – David