doc
doc

Reputation: 123

C# Object reference not set to an instance of an object

im getting the Object reference not set to an instance of an object for line 43 and i cant figure out why, i have searched the web and cant seem to find the answer. i am new to C# and programming in general and trying to learn. if some one can help me out it would be great

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace test
{
    public partial class Form1 : Form
    {
        [Serializable]
        public class ore 
        {
            public float Titan;
            public float Eperton;
        }

        ore b1 = null;
        ore b2 = null;

        public Form1()
        {
            InitializeComponent();

            ore b2 = new ore();
            ore b1 = new ore();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            float tempFloat;

            if (float.TryParse(textBox1.Text, out tempFloat))
            {
                b1.Titan = tempFloat; //line 43; where error happens
            }
            else
                MessageBox.Show("uh oh");
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            float tempFloat;
            if (float.TryParse(textBox1.Text, out tempFloat))
            {
                b2.Eperton = tempFloat;
            }
            else
                MessageBox.Show("uh oh");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            List<ore> oreData = new List<ore>();
            oreData.Add(b1);
            oreData.Add(b2);

            FileStream fs = new FileStream("ore.dat", FileMode.Create);
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(fs, oreData);
            fs.Close();
        }
    }
}

Upvotes: 2

Views: 2605

Answers (3)

Mo Valipour
Mo Valipour

Reputation: 13486

change your constructor to this:

public Form1()
    {
        InitializeComponent();

        b2 = new ore();
        b1 = new ore();
    }

Upvotes: 3

Martin Liversage
Martin Liversage

Reputation: 106826

You never assign the field b1. The b1 you assign in the constructor is a local variable. Change the code in the constructor to this:

b2 = new ore();
b1 = new ore();

Upvotes: 5

Rob
Rob

Reputation: 27357

I'm assuming it's failing on any of the b1/b2 references.

ore b1 = null;
ore b2 = null;

Here you're declaring two private variables for your class

ore b2 = new ore();
ore b1 = new ore();

Here you're declaring two local variables for that method call. You're not altering the original variables. Change it to:

b2 = new ore();
b1 = new ore();

Upvotes: 6

Related Questions