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日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题