C#变量问题

Sou*_*Set -1 c#

遇到一些c#变量的问题.无法弄清楚我做错了什么.可能是一些简单的东西,但我已经有点了.

public class DataFileLoad
{
    //Public jagged array variables

    public string[][] aConfJag = null;
    public string[][] aPartJag = null;
    public string[][] aTypeJag = null;
    public string[][] aWkshpJag = null;
    public string[][] aWorkJag = null;

    public void loadFiles()
    {
        //The path of our exectuable
        string exePath = Application.StartupPath;

        //Set our working directory to our exe path for file reading
        Directory.SetCurrentDirectory(exePath);

        string[] aConferences = File.ReadAllLines(@"DATA\CONFERENCES.txt");
        string[] aParticipants = File.ReadAllLines(@"DATA\PARTICIPANTS.txt");
        string[] aType = File.ReadAllLines(@"DATA\TYPE.txt");
        string[] aWkshpReg = File.ReadAllLines(@"DATA\WKSHP_REGISTRATIONS.txt");
        string[] aWorkshops = File.ReadAllLines(@"DATA\WORKSHOPS.txt");

        //Make our arrays jagged for easier processing
        string[][] aConfJag  = aConferences.Select(line => line.Split(',').ToArray()).ToArray();
        string[][] aPartJag  = aParticipants.Select(line => line.Split(',').ToArray()).ToArray();
        string[][] aTypeJag  = aType.Select(line => line.Split(',').ToArray()).ToArray();
        string[][] aWkshpJag = aWkshpReg.Select(line => line.Split(',').ToArray()).ToArray();
        string[][] aWorkJag  = aWorkshops.Select(line => line.Split(',').ToArray()).ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试从另一个类访问变量时,它们会变为null并抛出异常.

public void updateFormData()
{
    //Participant Type
    var data = new DataFileLoad();
    data.loadFiles();
    foreach(string[] e in data.aTypeJag)
    {
        MessageBox.Show(e[1]);
        comboConference.Items.Add(e[1]);
    }
}
Run Code Online (Sandbox Code Playgroud)
System.NullReferenceException was unhandled
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=FBLA_App
Run Code Online (Sandbox Code Playgroud)

是我得到的.思考?不太清楚为什么我得到空变量.

Cro*_*ono 5

问题是您在loadFiles方法中定义了新变量.

改为:

public class DataFileLoad
{
    //Public jagged array variables
    public string[][] aConfJag = null;
    public string[][] aPartJag = null;
    public string[][] aTypeJag = null;
    public string[][] aWkshpJag = null;
    public string[][] aWorkJag = null;

    public void loadFiles()
    {
        //The path of our exectuable
        string exePath = Application.StartupPath;

        //Set our working directory to our exe path for file reading
        Directory.SetCurrentDirectory(exePath);

        string[] aConferences = File.ReadAllLines(@"DATA\CONFERENCES.txt");
        string[] aParticipants = File.ReadAllLines(@"DATA\PARTICIPANTS.txt");
        string[] aType = File.ReadAllLines(@"DATA\TYPE.txt");
        string[] aWkshpReg = File.ReadAllLines(@"DATA\WKSHP_REGISTRATIONS.txt");
        string[] aWorkshops = File.ReadAllLines(@"DATA\WORKSHOPS.txt");

        //Make our arrays jagged for easier processing
        aConfJag  = aConferences.Select(line => line.Split(',').ToArray()).ToArray();
        aPartJag  = aParticipants.Select(line => line.Split(',').ToArray()).ToArray();
        aTypeJag  = aType.Select(line => line.Split(',').ToArray()).ToArray();
        aWkshpJag = aWkshpReg.Select(line => line.Split(',').ToArray()).ToArray();
        aWorkJag  = aWorkshops.Select(line => line.Split(',').ToArray()).ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

我也强烈建议您不要作为是揭露这些变量.将它们封装在只读属性中,以便不能从DataFileLoad类外部更改它们的值.