Reputation: 123
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
Reputation: 13486
change your constructor to this:
public Form1()
{
InitializeComponent();
b2 = new ore();
b1 = new ore();
}
Upvotes: 3
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
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