Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 218
  • Last Modified:

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

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
ehensens
Asked:
ehensens
  • 2
  • 2
2 Solutions
 
Chuck YetterCommented:
Initialize each CParamInfo object in the array using new.
0
 
ehensensAuthor Commented:
Hi Axshun,

Sorry, but can you be a little more specific? I'm not positive what you mean (example?)
0
 
spprivateCommented:
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
 
Chuck YetterCommented:
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
 
ehensensAuthor Commented:
Thank you to you both
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now