использование переменных для вызова переменных - PullRequest
0 голосов
/ 26 марта 2012

привет, как мне сделать ниже?

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, чтобы я мог вызвать экземпляр изконканатная строковая переменная pc и int 1 ??

Ответы [ 2 ]

5 голосов
/ 26 марта 2012

По сути, вы этого не делаете. Вы можете потенциально использовать отражение, но это плохая идея. Вместо этого вам следует использовать collection всякий раз, когда вы хотите хранить ссылки на несколько объектов и обращаться к ним по какому-либо ключу (будь то индекс, имя и т. Д.).

Таким образом, вместо:

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

Вы бы имели:

List<Foo> pcs;
...
Foo pc = pcs[z]; 
0 голосов
/ 26 марта 2012

Смотрите здесь: 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.

Редактировать: извините, изначально это было не совсем правильно - и я исправил свой пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...