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;
}
}
C# 一个数组未赋值引发的错误的更多相关文章
- C++为什么不可以把一个数组直接赋值给另一个数组
今天好奇一个问题, int a[3] = {1,2,3]; int b[3]; b=a; 编译器报错, 网上找了一圈, 大概明白: C++就是如此设定的, 数组不能直接赋值, 可以使用std::cop ...
- js在ie6下的一个bug—未结束标签的错误
在IE6下,如果在body标签没结束前,用代码获取body对象就会出现错误.如: <html> <head> <script type="text/javasc ...
- python代码位置引发的错误
觉得python对代码位置的要求简直是变态,缩进引发的错误我以前在博客里讲过了,如果不懂可以看看我以前的博客,今天又遇到了一个代码位置所引发的错误,现在给大家分享一下: 我想要打印出来一个5*5的实心 ...
- Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件,导致发生错误。如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误。
ylbtech-Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件 ...
- javascript中把一个数组的内容全部赋值给另外一个数组
如:var a = [1,2,3,4];var b= [];b = a;这个不是把值赋值过去而是b作为a的引用,b改变的是a如何b指向的是一个新数组,a把元素值全部赋值过去? 1.普通数组可以使用 ...
- div里面的元素垂直均匀分布 按钮引发地址栏出现问号 判断一个数组是否为空 div底部居中 路由传参接受参数
一个固定高度的div的子元素 在垂直 方向上平均分布 .important-dec{ height: 121px; flex-direction: column; display: flex; jus ...
- C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
C#实现如何判断一个数组中是否有重复的元素 如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...
- IIS不定期Crash和Oracle“未处理的内部错误(-2)”的问题分析
问题描述:系统不定期报出Oracle“未处理的内部错误(-2)”,严重时IIS会Crash 典型异常日志如下: Exception type: System.AccessViolationExce ...
- [C++程序设计]字符数组的赋值与引用
只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值. char c[5]; c={′C′,′h′,′i′,′n′,′a′}; //错误,不能对整个数组一次赋值 c[0]=′C′; c[1]=′h ...
随机推荐
- win10 搭建react-native开发环境
本文地址:http://www.cnblogs.com/jying/p/7992130.html 系统:win10 系统内存:8G java-jdk:1.8.144 开发工具:vs code 首先是网 ...
- C# windows服务:如何获取服务程序所在的文件夹
AppDomain.CurrentDomain.BaseDirectory 就这么一句话
- HBase 1.2.6 完全分布式集群安装部署详细过程
Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Bigtable思想的开源实现,可在廉价的PC Server上搭建大规模结构化存 ...
- workerman channel组件集群推送
<?phpuse Workerman\Worker; require_once '../../web/Workerman/Autoloader.php';require_once '../../ ...
- location search的中文加密
最近项目中遇到一个这样问题,在页面跳转时,追加了location.search,有中文字符,但是在分享第二次时,这个链接无法获取中文字段,变成乱码. 仔细对比,发现在页面分享时,浏览器自动对中文进行了 ...
- Spring 7种事务传播行为
1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGATION_SUPPORTS:支持当前事务,如 ...
- FP ABPPMGR表 其它常用存储过程
SAP_MATERIAL_SO:处理材料订单缺少BOM,ROUTING信息 1. 增加这部分订单的BOM信息 2. 增加这部分订单材料的ROUTING信息 3. 如果是 ...
- Python程序打包—pyinstaller
简介:PyInstaller是一个十分有用的第三方库,通过对源文件打包,Python程序可以在没有安装 Python的环境中运行,也可以作为一个独立文件方便传递和管理. PyInstaller的官方网 ...
- Vue.js 生态之vue-router
vue-router是什么~~ vue-router是Vue的路由系统,定位资源的,我们可以不进行整页刷新去切换页面内容. vue-router的安装和基本配置 vue-router.js 可以下载 ...
- 一:怎样运行python程序
运行python程序有三种方法: 1,在命令行运行python代码:C:/python27>python hello.py [注:如果没有把PATH环境变量设置为包含这一路径,要确保输入到了 ...