zoukankan      html  css  js  c++  java
  • C# 一个数组未赋值引发的错误

        在电脑前又是一天,后来脑子也糊里糊涂,可能是基础还不牢固,设置断点,找了找问题才发现数组定义出了问题,

    我是这样定义数组的,string[] auths ; string auths=new string[]{} 等等

    程序第一次报错,未实例化对象,什么情况这是,我以为是写遍历队列的问题,那个队列声明为全局了,后来值也能传给重新定义的测试string 变量,也没问题啊。

    再后来才知道未实例化数组,数组也要实例化,以前觉得可以信手哪来就用,在c#上的托管堆上,没有实例化对象是没法用的。实例化数组

       string[] auths = new string[5];  //这样写就没问题了

      string[] codes= new string[5] { "", "", "", "", "" };   这个是赋值的写法

    第二个问题:

    因为我要赋值给数组5个数之后,清空数组。

    于是我用了这个写法

    auths = null;
    codes = null;

    结果就是第一个问题解决了之后,又出现了未实例化对象的报错,靠,此时脑袋有点不爱动了,后来才慢慢体会到实例化对象的用处

    赋值给null之后,等于释放了内存堆的对象,等于new的对象失效了。两个问题叠加在一起,幻觉出现。编程就是这么有趣,同时

    也是枯燥,若值不为空的话,还得考虑一次读取队列中5个值,若队列最后不足5个的时候,数组后几位的值肯定是错的,那程序在结尾肯定会出现问题。

    于是开始想若数值不足5个的情况怎么处理。

    下边程序作为一个记录吧,提醒自己。改天想想如何添加不足5个的情况,总数取余吗,那我的add里边的有好几个参数没有值咋整,可以在add方法里边判断,我的输出pdf一行画 5个图,还得写一行画四个图,一行3个,一行2个,一行1个的程序啊。

    string[] auths = new string[5];
    string[] codes= new string[5] ;

    foreach (FileContent fc in filecontents)
    {

    kkk=fc.Cardid;
    auths[i] = fc.Cardid.ToString();
    codes[i] = fc.Autcode;
    ++i;
    if(i==5)
    {
    cd.Add(new code(codes[0], codes[1], codes[2], codes[3], codes[4], codes[0], codes[1], codes[2], codes[3], codes[4], auths[0], auths[1], auths[2], auths[3], auths[4]));
    i = 0;

    }

    }

  • 相关阅读:
    CF850A Five Dimensional Points 题解
    AT3963 [AGC024F] Simple Subsequence Problem 题解
    jquery事件绑定机制
    前端初级词汇
    一个checkbox细节处理方式(checkbox与后面的文字对其)
    转 CSS hack:针对IE6,IE7,firefox显示不同效果
    想到的几点页面规范
    jQuery UI Dialog:Demo2:实用技巧
    zindex
    递归示例
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/5617222.html
Copyright © 2011-2022 走看看