[英]C# variable issue
Having problems with some c# variables. 一些C#变量有问题。 Can't figure out what i'm doing wrong.
无法弄清楚我在做什么错。 Probably something simple but i've been at it for a bit.
可能有些简单,但是我已经做了一段时间了。
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();
}
}
And when I try to access the variables from another class they come up as null and it throws an exception. 当我尝试从另一个类访问变量时,它们显示为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]);
}
}
System.NullReferenceException was unhandled HResult=-2147467261 Message=Object reference not set to an instance of an object. Source=FBLA_App
Is what I get. 是我得到的。 Thoughts?
有什么想法吗? Not quite sure why i'm getting null variables.
不太确定为什么我会得到空变量。
The problem is that you are defining new variables inside the loadFiles
method. 问题是您正在
loadFiles
方法中定义新变量。
Do this instead: 改为这样做:
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();
}
}
I would also strongly recommend that you do NOT expose these variables as is. 我也强烈建议 ,由于是你不公开这些变量。 Encapsulate them in readonly properties instead so that their value cannot be changed from outside the
DataFileLoad
class. 而是将它们封装在只读属性中,以便不能从
DataFileLoad
类外部更改其值。
you're "hiding" the class fields by re-declaring them. 您通过重新声明来“隐藏”类字段。 just take off the declaration:
只需摘下声明:
//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();
Change 更改
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();
to 至
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();
You were creating new variable rather than assigning them to you class level variables 您正在创建新变量,而不是将其分配给您的类级变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.