tangjy2000 2022-04-24 00:51 采纳率: 100%
浏览 83
已结题

c#,关于全局变量使用问题

定义一个全局list变量result,如下:


public static class Result
    {
        public static int summer;
        public static List<string> result = new List<string>() ;
              
    }

在下表控件中赋值,输出到文本文件中,无误。

private void button1_Click(object sender, EventArgs e)
        {   Result.result.Add(arraylist1[n]); }

但是,在另一个控件试图使用这个list数据,通过Result.result[item]引用,发现总是提示:超出其他信息: 索引超出范围。必须为非负值并小于集合大小。

private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(Result.result[0]);
        }

于是把这个list数据试图输出到文本,发现文本为空。大概是因为空值,所以无论怎么引用都是超出索引。

可是,我明明通过控件button1 已经赋值了啊?并且能输出到文本。但是,试图通过button2来引用的时候,确是空值。
百思不得其解,在此先谢了。

困扰我好几个晚上了。

  • 写回答

2条回答 默认 最新

  • 楚楚3107 2022-04-24 08:56
    关注

    1.你确定Button1中的arraylist1[n]是非空字符串么。
    2.在使用List的时候,尤其是使用索引检索result[0]时,一定要先判断,然后再使用,这是一个常识。不然在使用时很容易出现空引用异常问题。
    判断List是否为空时,最好也判断时List是否初始化,你的这个已经初始化的没有问题。那就判断时List.Count 和item值进行判断。item的最大值只能取到Count - 1,即 item < Count;因为List下表是从零开始的。按照我说的一检查一下代码。如有帮助,请采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料