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

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日

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题