使用变量来调用变量

时间:2012-03-26 15:02:51

标签: c# variables object concatenation

嗨我怎么办下面的?

int z = 1;
string one = "pc";
string two = z.ToString();
                    //what goes here
Console.Write("Host One:\tSent-{0}\tSuccess-{1}\tFail-{2}", xxxxx.numepings, pc1.numepings_s, pc1.numepings_f);
Console.WriteLine();

所以在我的代码pc1中是一个对象的实例,我可以在行//what goes here中使用什么,然后代替xxxxx,以便我可以从中调用实例concanatated字符串变量pcint 1 ??

2 个答案:

答案 0 :(得分:5)

基本上,你没有。你可以可能使用反射,但这是一个坏主意。相反,只要您想存储对多个对象的引用并通过某种键(无论是索引,名称等)来解决它们,您就应该使用集合

所以不要:

Foo pc0;
Foo pc1;
Foo pc2;
...

你会:

List<Foo> pcs;
...
Foo pc = pcs[z]; 

答案 1 :(得分:0)

见这里:http://msdn.microsoft.com/en-us/library/1fce0hc8.aspx

// Create an instance of the SomeType class that is defined in this 
// assembly.
var oh = Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase, one + z /* as a  full type name */);

// Call an instance method defined by the SomeType type using this object.
dynamic st = oh.Unwrap();

st.DoSomething(5);

您可以通过它的字符串名称来执行此类操作来创建对象 - 但是如果没有问题,则无法将其强制转换为特定类型。

你可以作弊,然后使用dynamic

编辑:对不起,这本来不太正确 - 而且我修复了我的例子。