遇到一些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)
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
是我得到的.思考?不太清楚为什么我得到空变量.
问题是您在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类外部更改它们的值.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |