C#实例错误

时间:2012-12-02 20:26:06

标签: c# exception instance

所以我有我的Winform,其中我有一个带有数据的dgv,我需要能够在点击相应的单元格时将这些数据保存到两个单独的arraylists中。 真的没有问题,但我可能有可能是编程中最愚蠢的错误: 我需要实例化arraylists所在的类“clsAL”,但程序仍然会抛出错误,认为“对象引用未设置为对象的实例”。这是代码(任何与此无关的东西,特别是如果它是西班牙语:D)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.OleDb;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;


    namespace WindowsFormsApplication7
    {
        public partial class FormH : Form
        {
            clsAL cls;
        public FormH()
        {
            InitializeComponent();
        }

        private void FormH_Load(object sender, EventArgs e)
        {
            cls = new clsAL();
            OleDbCommand comm;
            OleDbConnection conn = new OleDbConnection();
            DataSet dset;
            OleDbDataAdapter adap = new OleDbDataAdapter();
            OleDbCommandBuilder cmb;
            conn.ConnectionString = "Provider = 'Microsoft.Jet.OLEDB.4.0'; Data Source = 'RoboTIC.mdb'";
            comm = new OleDbCommand("Select * From tblHistorial", conn);
            adap = new OleDbDataAdapter(comm);
            dset = new DataSet();
            adap.Fill(dset, "tblHistorial");
            dgvHistorial.DataSource = dset.Tables["tblHistorial"];
        }

        private void dgvHistorial_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            cls = new clsAL();
            string operacion = dgvHistorial.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
            cls.dir.Clear();
            cls.time.Clear();
            string aux = "";
            for (int a = 0; a > operacion.Length; a++)
            {
                aux = aux + operacion[a];
                if (aux == "a")
                {
                    cls.dir.Add("avanzar");
                }
                if (aux == "d")
                {
                    cls.dir.Add("derecha");
                }
                if (aux == "i")
                {
                    cls.dir.Add("izquierda");
                }
                if (aux == "r")
                {
                    cls.dir.Add("retroceder");
                }
                if (aux == "/")
                { 

                }
                if (aux != "a" && aux != "a" && aux != "a" && aux != "a" && aux != "/")
                {
                    cls.time.Add(Convert.ToInt32(operacion[a]+operacion[a+1]));
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题在于dir中的clsAl arraylist。这是NullReferenceException。这是因为您在尝试呼叫dir时尚未分配Clear() arraylist。

clsAl添加

的构造函数中
     clsAl()
     {
          dir = new ArrayList();
          time = new ArrayList();
     }

你将停止获得这些例外。