C#使用“EXEC”命令打印变量

问题描述:

在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

我认为,如果您在尝试使用某些东西时阅读了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);