【问题标题】:This piece of code gets an error that those variables haven't been assgined to, and I can't figure out why这段代码得到一个错误,这些变量没有被分配,我不知道为什么
【发布时间】:2023-12-13 23:47:01
【问题描述】:

我想做一个静态列表,但是当我尝试从文件中读取并给列表一个值时,它说它还没有被分配,所以它的值为空。

class Log
    {   static public List<string> varos;
        static public List<int> tav;
        static public List<int> n;

        public void Input()
        {
            var sr = new StreamReader("vartav.txt");

            while (!sr.EndOfStream)
            {
                string s = sr.ReadLine();
                string[] seged = s.Split(' ');
                Log.varos.Add(seged[0]);
                Log.tav.Add(Convert.ToInt32(seged[1]));
            }
        } 

【问题讨论】:

    标签: c# list static filereader


    【解决方案1】:

    变量不是对象,它只是对象的占位符。您正在声明变量:

    static public List<string> varos;
    

    但您从未将它们初始化为对象:

    static public List<string> varos = new List<string>();
    

    您也可以在方法中初始化它们。当然,在调用该方法之前它们不会被初始化。

    【讨论】:

      【解决方案2】:

      尝试在 Input() 方法中初始化

      varos = new List<string>();
      tav = new List<string>();
      n = new List<string>();
      

      或在你声明 em 时初始化

      static public List<string> varos = new List<string>();
      static public List<string> tav = new List<string>();
      static public List<string> n = new List<string>();
      

      【讨论】:

      • 这看起来像是正确的答案,但应该通过解释您的建议作品来改进这个答案。例如,您在声明时分配值。感谢您的贡献。