对象引用没有设置到对象实例的原因很多:
待续。。。
1、如下:
public int Revise(ref int numline, ref int numcircle, ref int numtext,System.IO.StreamWriter str_w, List< string >
record,EXT extend,Line []
lines, Circle[] circles, Text []
texts)
{
string []
record1 =record.ToArray();
for (int i
= 0; i < record1.Length;i++ )
{
string temp
= string .Empty;
temp = record1[i];
if (temp
== "$EXTMIN" )
{
record1[i + 2] = Convert .ToString(extend.Min_x)
;
record1[i + 4] = Convert .ToString(extend.Min_y);
record1[i + 6] = Convert .ToString(extend.min_z);
record1[i + 10] = Convert .ToString(extend.Max_x);
record1[i + 12] = Convert .ToString(extend.Max_y);
record1[i + 14] = Convert .ToString(extend.Max_z);
i += 14;
continue ;
}
if (temp
== "AcDbLine" )
{
record1[i + 2]= Convert .ToString(lines[numline].x1);//此处开始报错
record1[i + 4] = Convert .ToString(lines[numline].y1);
record1[i + 6] = Convert .ToString(lines[numline].z1);
record1[i + 8] = Convert .ToString(lines[numline].x2);
record1[i + 10] = Convert .ToString(lines[numline].y2)
;
record1[i + 12] = Convert .ToString(lines[numline].z2);
numline--;
i += 12;
continue ;
}
}
for (int i
= 0; i < record1.Length;i++ )
{
str_w.WriteLine(record1[i]);
}
return 1;
}
其中numline,numcircle,numtext,代表的line,circle,text对象的个数
原因就在于,数组的下标总是比个数小1,假如有5个元素,我们尝试给lines[5]赋值,而lines[5]已经越界,更不可能初始化。
2、对于数组,不光要实例化数组,还要实例化数组的对象
public int Read_Entities(ref int numpolyline, Polyline []
plines,System.IO. StreamReader str_r)
{
string buff
= string .Empty;
buff = str_r.ReadLine();
//int numline
= 0;
//int numcircle
= 0;
//int numtext=0;
while (buff
!= "OBJECTS" )
{
if (buff
== "LWPOLYLINE" )
{
while (buff
!= "AcDbPolyline" )
{
buff = str_r.ReadLine();
}
plines[numpolyline] = new Polyline ();//(1)
str_r.ReadLine();
plines[numpolyline].pointnum = Convert .ToInt32(str_r.ReadLine());
str_r.ReadLine();
str_r.ReadLine();
str_r.ReadLine();
str_r.ReadLine();
plines[numpolyline].points = new point [plines[numpolyline].pointnum];//(2)
for (int i=0;i<plines[numpolyline].pointnum;i++)
{
plines[numpolyline].points[i] = new point ();//(3)
str_r.ReadLine();
plines[numpolyline].points[i].x = Convert .ToDouble(str_r.ReadLine());
str_r.ReadLine();
plines[numpolyline].points[i].y = Convert .ToDouble(str_r.ReadLine());
}
}
buff = str_r.ReadLine();
}
return 1;
}
其中,多线由多个点组成
注释(1)处:初始化polyline对象
注释(2)处:初试化point数组
注释(3)处:初始化点对象实例
一直忘记了第二个,导致一直提示错误
本文深入探讨了C#中数组与对象实例化的关键问题,包括如何正确实例化数组及其元素对象,以及实例化过程中常见的错误示例。通过具体代码解释了对象引用未设置到对象实例的原因,并提供了实例化数组及数组中对象的正确做法。

被折叠的 条评论
为什么被折叠?



