2013-08-26 147 views
-1

在python中打印11個變量列表,我會這樣做使用「Exec」。有11個項目的列表,這些代碼將它們全部打印出來。C#使用「EXEC」命令打印變量

for count in range(1,11): 
    question = ("print " + "question" + str(count)) 
    exec question 

我該如何在C#中做類似的事情? (不使用名單)

這裏是我到目前爲止

string line; 
for (int i = 1; i < 200; i++) 
    { 
line = ("Console.WriteLine(scene1_f"+i); 
    // Execute "line" 
    } 

感謝。

+1

什麼Python做'exec'命令? – Shaharyar

+0

不要這樣做。使用一個數組而不是200個不同的變量。 – Blorgbeard

+0

@blorgbeard你的建議如何幫助實現OP要求的問題:「我將如何在C#中做類似的事情?(不使用列表)」 – Alex

回答

1

我認爲,如果您在嘗試使用某些東西時閱讀了c#語言中的一些內容,這將是明智之舉。同時,如果在嘗試回答這些問題之前查閱了一些Python教程,這將是明智的。

儘管c#支持動態類型和表達式,但它主要用於創建「強類型」結構。對於你提供的例子,我相信沒有簡單/簡單的直接翻譯。

您的「scene1_f1」到「scene1_f200」變量可能會是一些c#類型的實例,如Scene類,它具有對對象實例進行操作的一些屬性和方法。

如果您有多個Scene對象要對其執行相同類型的操作(如將它們打印到控制檯,如您的示例中所示),通常認爲以某種方式對它們進行分組是很好的做法,例如添加他們到一個列表或將它們存儲在一個數組中。

爲了說明我的意思我添加了一個假設的例子:

public class Scene 
{ 
     public Scene(string name) 
     { 
      Name = name; 
     } 

     public string Name { get; set; } 

     // ... more properties 

     public void Draw() 
     { 
      // logic for drawing 
     } 

     // ... more methods. 

     public override string ToString() 
     { 
      // here return what you would want to have as 
      // a string representation of a Scene object. 
      return "Scene " + Name; 
     } 
} 


// in a different part of your code, create and add the Scene objects 
var scenesList = new List<Scene>(); 

scenesList.Add(new Scene("Some scene name")); 
// add more 

// Now you can print them to the console like this: 
foreach (var scene in scenesList) 
    Console.WriteLine(scene);