9

私はC#を使用してこのようなことをしたいです:

if (i == 0)
{
 button a = new button();
}
else
{
 TextBlock a = new TextBlock();
}
mainpage.children.add(a);

しかし、私はそのエラーを受け取ります

エラー1名前'a'は現在のコンテキストに存在しません

何か案は ?

前もって感謝します !

4

4 に答える 4

16

buttonとの両方がTextblock派生する共通の基本クラスが必要です。完了if後にアクセスする場合は、ステートメントの外部で宣言する必要がありますifControl多分?

Control a;
if (i == 0)
{
 a = new button();
}
else
{
 a = new TextBlock();
}
mainpage.children.add(a);

使用している特定のコントロール ツールキット (WPF でしょうか?) がわからないため、これ以上のアドバイスはできません。Addしかし、手がかりを得るために署名を調べます-宣言されたパラメーターは何ですか?

于 2013-02-12T08:25:47.813 に答える
6

aif/else の範囲外で宣言してみてください。このような:

Control a;
if (i == 0)
{
  a = new button();
}
else
{
  a = new TextBlock();
}
mainpage.children.add(a);
于 2013-02-12T08:26:49.817 に答える
4

親スコープで変数を宣言し、共通の基本クラスを与える必要があります。との共通基本クラスはSystem.Windows.Controls.TextBlockSystem.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);
于 2013-02-12T08:30:33.773 に答える
3

ここで、条件内での変数の宣言と割り当てに関する議論を見つけました: http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/11a423f9-9fa5-4cd3-8a77-4fda530fbc67

他の言語ではできますが、C#ではできないようです

于 2013-02-12T08:27:16.220 に答える