数组没有正确初始化,所有记录都为空。 C#

时间:2016-04-20 22:56:48

标签: c# arrays winforms

我有多个文本文件读入字符串数组。根据用户按下的按钮,富文本框中填充了数组中其中一个字符串的文本。

以下是正在设置的数组的代码。请注意,有更多的if / else语句执行相同的操作,但使用不同的文件,但我不想在这里浪费空间来放置它们。

  namespace ModNote
  {
public class backgroundProgram
{
    public static int moduleNumber;
    public static string[] noteArray;
    public static string[] moduleArray = new string[7];
    const string dataPath = @"Data\";
    const string gamesPath = "CGP1005M.txt";
    const string algorithmsPath = "CMP1124M.txt";
    const string programmingPath = "CMP1127M.txt";
    const string operatingPath = "CMP1005M.txt";
    const string computerPath = "CMP1125M.txt";
    const string webPath = "CMP1129M.txt";
    const string informationPath = "CMP1123M.txt";


    public backgroundProgram()
    {
        #region // Reading to the array
        // Check the month file exists?
        if (File.Exists(dataPath + gamesPath))
        {
            // Read in the month file.
            moduleArray[0] = File.ReadAllText(dataPath + gamesPath);
        }
        else
    }
}

不幸的是,当分配它们时,数组是空的,所以我在上面的代码中放了一个断点,并且这些行永远不会执行,我哪里出错?

请注意,根据用户在程序开头点击的按钮,“backgroundProgram.moduleNumber”的值将会改变。

 namespace ModNote
 {
public partial class moduleinfoScreen : Form
{
    public moduleinfoScreen()
    {
        InitializeComponent();
        Shown += moduleinfoScreen_Shown;
    }
    public void moduleinfoScreen_Shown(Object sender, EventArgs e)
    {
        switch (backgroundProgram.moduleNumber)
        {
            case 1:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            case 2:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            case 3:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            case 4:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            case 5:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            case 6:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            case 7:
                moduleinfoTextbox.Text = backgroundProgram.moduleArray[0];
                break;
            default:
                MessageBox.Show("Nope");
                break;
        }
    }

为什么我的数组代码没有被执行的任何想法?

1 个答案:

答案 0 :(得分:0)

问题很可能在于这一行:

                if (File.Exists(dataPath + gamesPath))

即在Data \ CGP1005M.txt中查找文件。因为没有起始斜杠,所以它将查找当前路径中的文件。运行c#程序时,当前路径将是bin文件夹。

例如,如果您运行的项目位于c:\ project,它将尝试在c:\ project \ bin \ debug \ data \ CGP1005M.txt中查找文件。

考虑项目的位置,这些路径是否正确?