变量是一种类型,在给定的上下文中无效

时间:2017-06-19 13:20:31

标签: c# asp.net-mvc

我有一个名为Guest

的界面

我有两个模型,IUserCardOut,它们都实现了Card

我有一个名为User的课程,它有两个属性,CardOutpublic CardOut(Interfaces.IUser User, Card Card) { this.User = User; this.Card = Card; }

以下是User类的构造函数:

Guest

我从数据库中获取了一些行,并根据单元格的类型创建了foreach (IDictionary<string, string> row in rows) { if (row["type"] == "xxx") { User UserValue = new User(); UserValue.buildById(int.Parse(row["user_id"])); } else { Guest UserValue = new Guest(); UserValue.buildById(int.Parse(row["id"])); } Card Card = new Card(); Card.buildCardByIndex(int.Parse(row["cardindex"])); CardOut CardOut = new CardOut(UserValue, Card); //Here is the error } CardOut

<mx:Canvas>

        <mx:Image id="img" showEffect="Fade" completeEffect="{fader}" />

        <s:HGroup verticalAlign="middle" horizontalAlign="center">

            <mx:Label id="touchBegin" text="Touch the screen to continue" fontSize="72" />

        </s:HGroup>

    </mx:Canvas>

当我想要实例化一个新的form.markAsPending()对象时,我收到此错误:

  

错误CS0103当前上下文中不存在名称“UserValue”

我该如何解决?我无法在if条件之外创建它,因为我不知道,我应该实例化哪个类。

1 个答案:

答案 0 :(得分:5)

IUser块之外声明一个if类型的变量,并使用具体类型在if内实例化它。

修改:添加了演员,因为IUser似乎没有成员buildById

foreach (IDictionary<string, string> row in rows) {
    IUser UserValue;
    if (row["type"] == "xxx") {
        UserValue = new User();
        ((User)UserValue).buildById(int.Parse(row["user_id"]));
    } else {
        UserValue = new Guest();
        ((Guest)UserValue).buildById(int.Parse(row["id"]));
    }
    Card Card = new Card();
    Card.buildCardByIndex(int.Parse(row["cardindex"]));
    CardOut CardOut = new CardOut(UserValue, Card);  
}