Solved

Help with C# classes - Object reference not set to an instance of an object.

Posted on 2009-04-08
5
195 Views
Last Modified: 2012-05-06
Hi all. I have some C# code here that compiles and it reads pretty easily. But although it compiles, it crashes on startup and when I tell it to debug it says "Object reference not set to an instance of an object." at fillParamArray().

Does anyone know how to fix what I'm doing? It seems pretty straightforward...
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Web;
using System.Text;
using System.Web;
using System.Xml;
 
public class CParamInfo
{
    public string LabelText;
    public long Value;
}
 
public class getString
{
    static CParamInfo[] globalParams = new CParamInfo[17];
 
    public static string getParameterInfo(int parameterID)
    {
        string LabelText;
        long Value;
 
        /* String that will contain all values separated by | characters */
        string fullValue;
 
        LabelText = globalParams[parameterID].LabelText;
        Value = globalParams[parameterID].Value;
 
        fullValue = "|ok|" + TitleText + "|" + LabelText + "|";
 
        return fullValue;
    }
 
    static void fillParamArray()
    {
        globalParams[0].LabelText = "Title for 0";
        globalParams[0].Value = 45;
 
        globalParams[1].LabelText = "Title for 1";
        globalParams[2].Value = 65;
 
        globalParams[3].LabelText = "Title for 2";
        globalParams[3].Value = 100;
    }
 
    public static void Main()
    {
        /* Fill in the Param Array values */
        fillParamArray();
 
        Console.WriteLine("Top of Screen Printout\n");
 
        // Do other stuff here that calls other functions, not important for this problem
 
    }
}

Open in new window

0
Comment
Question by:ehensens
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 6

Expert Comment

by:Chuck Yetter
ID: 24100958
Initialize each CParamInfo object in the array using new.
0
 

Author Comment

by:ehensens
ID: 24100975
Hi Axshun,

Sorry, but can you be a little more specific? I'm not positive what you mean (example?)
0
 
LVL 15

Accepted Solution

by:
spprivate earned 250 total points
ID: 24101029
You have to create
globalParams[0] = new CParamInfo(); before each param to assing value.
 globalParams[0] = new CParamInfo();        
globalParams[0].LabelText = "Title for 0";
        globalParams[0].Value = 45;
 globalParams[1] = new CParamInfo(); 
        globalParams[1].LabelText = "Title for 1";
globalParams[2] = new CParamInfo(); 
        globalParams[2].Value = 65;
 globalParams[3] = new CParamInfo(); 
        globalParams[3].LabelText = "Title for 2";
        globalParams[3].Value = 100;

Open in new window

0
 
LVL 6

Assisted Solution

by:Chuck Yetter
Chuck Yetter earned 250 total points
ID: 24101062
Your array contains null pointers to CParamInfo objects.  You need to initialize each element in the array.
Loop through the array and set each array element to a new object:

for(int i =0; i < arraysize; i++)
{
    globalParams[i] = new CParamInfo();//may need arguments in constructor call
}
0
 

Author Closing Comment

by:ehensens
ID: 31568207
Thank you to you both
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question