如何在C#asp.net中有条件地创建一个类的新实例?

Bar*_*hen 0 c# asp.net

我有一个不同构造函数的类.一个构造函数,没有传递(创建新记录),另一个传递ID(用于更新).我想测试一个条件并根据结果创建一个类对象的新实例.我的问题是该对象没有执行if语句.

protected void Position()
{
    if (Session["PositionID"] == null)
    {
        JobPosition p = new JobPosition();
    }
    else
    { 
        JobPosition p = new JobPosition(Convert.ToInt32(Session["PositionID"]));
    }
    p.positionTitle= pTitle.text;
    p.positionMission= pMission.text;
    p.positionDepartment= pDept.text;
    Session["PositionID"] = Convert.ToString(p.SaveDB());   
}
Run Code Online (Sandbox Code Playgroud)

p不能在当前上下文中使用.我可以将我的代码复制到每个条件中,看起来我不应该这样做.

我该怎么用p

Mar*_*ers 8

您需要将声明移到pif语句之上:

JobPosition p;

if (Session["PositionID"] == null)
{
    p = new JobPosition();
}
else
{ 
    p = new JobPosition(Convert.ToInt32(Session["PositionID"]));
}
Run Code Online (Sandbox Code Playgroud)

如果在本地范围内声明变量,则在离开该范围时无法访问该变量.