NullReferenceException未被用户代码处理

时间:2013-04-04 07:49:07

标签: c# asp.net nullreferenceexception

我有图像滑块,在IE中我有错误。

这是我的代码:

*//Složka s obrázky partnerů
string slozka = HttpContext.Current.Server.MapPath("~/Partneri");

protected void Page_Load(object sender, EventArgs e)
{
    int cislo_obrazku = 0;
    if (!Page.IsPostBack)
    {
        ArrayList slide = new ArrayList();
        System.IO.DirectoryInfo inputDir = new System.IO.DirectoryInfo(slozka);
        foreach (FileInfo eachfile in inputDir.GetFiles())
        {
            slide.Add(eachfile.ToString());
            cislo_obrazku += 1;
        }
        Session["cislo_obrazku"] = cislo_obrazku;
        Session["obrazky"] = slide;
        Casovac(this, new EventArgs());
    }
}

protected void Casovac(object sender, EventArgs e)
{
    ArrayList slide = new ArrayList();
    slide = (ArrayList)Session["obrazky"];
    if ((Session["aktualni"] != null) && (Convert.ToInt32(Session["aktualni"]) != Convert.ToInt32(Session["cislo_obrazku"]) - 1))
    {
        //Posun na další
        Image1.ImageUrl = "~\\Partneri\\" + slide[Convert.ToInt32(Session["aktualni"]) + 1].ToString();
        Session["aktualni"] = Convert.ToInt32(Session["aktualni"]) + 1;
    }
    else if (Session["aktualni"] == Session["cislo_obrazku"])
    {
        //Pokud není další, začni znovu
        Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString();
        Session["aktualni"] = 0;
    }
    else
    {
        if (Convert.ToInt32(Session["cislo_obrazku"]) != 0)
        {
            //Initally load the first image in the image control
            Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString();
            Session["aktualni"] = 0;
        }
    }
}

错误:NullReferenceException was unhandled by user code

错误指向:

Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString();  

Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString();

你有什么想法吗?

2 个答案:

答案 0 :(得分:2)

NRE可能是最容易理解的例外。当你没有足够的防守编码时,它也是最常见的问题之一。

很简单,这意味着您正在尝试访问一个null的对象上的属性/方法。

在你的情况下

 slide[0].ToString();

或者

  • slide为空
  • slide[0]为空。

设置断点,调试您的应用。确定哪个为null,并且要么为此(例如,使用默认值),要么抛出更有意义的异常,如果它确实是该对象为空的异常情况。

答案 1 :(得分:0)

会话对象obrazky尚未初始化。

在以下后添加空检查:

slide = (ArrayList)Session["obrazky"];