Я нашел аналогичный вопрос, но он был закрыт и не ответил на это для меня.Можно ли проверить наличие переменной в C#?
У меня есть статический класс Globals, который содержит некоторые переменные и другой класс, который делает вещи. Я хочу, чтобы Stuff обнаружил, существуют ли Globals, а затем измените некоторые из его переменных на значения, хранящиеся в Globals. Я попробовал
try{
for (int i = 0; i < Globals.StuffArray.Length; i++)
StuffArray[i] = Globals.StuffArray[i];
}
catch
{
}
в конструкторе для предметов.
Это, очевидно, не работает, но идея состояла в том, чтобы попытаться изменить переменные и выбросить ошибку, чтобы get игнорировался, если Globals.StuffArray не существует.
Я все еще хотел бы знать, возможно ли это сделать, но я не решаю эту проблему таким образом, я добавил установщик, чтобы изменить настройки по умолчанию из Globals, и это работает нормально.
обновление для ясности:
Я хотел сделать так, чтобы я мог уйти из Globals и до сих пор есть материал компиляции.
Update:
В jvascript вы можете иметь что-то вроде
if (condition1) var x = 0;
if (x) doStuffTo(x);
JavaScript делает вещи в фоновом режиме, чтобы сделать это логично. Я хотел знать, может ли C# сделать что-то подобное.
Повторить: я спросил, потому что мне интересно, если это возможно. Некоторые из ответов, похоже, пропустили ту часть, где я сказал, что я не собираюсь решать эту проблему таким образом, проблема была легко решена путем изменения свойства Globals.
Во время компиляции вы всегда должны знать, существует ли класс или член. Какую проблему ты пытаешься решить? – SLaks
Вы имеете в виду «проверить его на null», а не «проверить, существует ли он»? Ваше приложение не будет компилироваться, если переменная не существует. – mason
Вы добавляете эти новые переменные динамически? Я бы использовал словарь, тогда вы можете проверить, есть ли имя переменной в словаре вместо массива. – Marko