C# объявить переменную в Оператор if
Я хочу сделать что-то вроде этого, используя C# :
if (i == 0)
{
button a = new button();
}
else
{
TextBlock a = new TextBlock();
}
mainpage.children.add(a);
но я получаю ошибку, что
Ошибка 1 имя " a " не существует в текущем контексте
какие идеи ?
спасибо заранее !
4 ответов
вам нужен общий базовый класс, как button
и Textblock
наследовать, и он должен быть объявлен вне if
оператор, если он должен быть доступен после if
завершено. Control
может?
Control a;
if (i == 0)
{
a = new button();
}
else
{
a = new TextBlock();
}
mainpage.children.add(a);
Не зная, какой конкретный инструментарий управления вы используете (возможно, WPF? Я не могу советовать дальше. Но я бы посмотрел на подпись для Add
чтобы получить ключ - каков параметр, объявленный как?
попробуйте объявить a
вне области действия if / else. Вот так:
Control a;
if (i == 0)
{
a = new button();
}
else
{
a = new TextBlock();
}
mainpage.children.add(a);
вам нужно объявить переменную в родительской области и дать ей общий базовый класс. Общий базовый класс для System.Windows.Controls.TextBlock
и System.Windows.Controls.Button
может быть, например,System.Windows.UIElement
или System.Windows.FrameworkElement
. Так что ваш код может выглядеть так:
UIElement a;
if (i == 0)
{
a = new Button();
}
else
{
a = new TextBlock();
}
mainpage.children.add(a);
Я нашел обсуждение объявления и назначения переменных внутри условия здесь: http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/11a423f9-9fa5-4cd3-8a77-4fda530fbc67
кажется, это невозможно сделать на C#, хотя вы можете на других языках