我有以下问题 -
rec = new Record(name, age, dob, sex, country );
webservicename.function[] test = new webservicename.function[1];
test[0].name = rec.name;
test[i].age = rec.age;
test[i].dob = dob;
test[i].sex = sex;
test[i].country = country;
当我开始调试时,它会在第一个测试[0]行停止并显示'NullReferenceException is uhandled'消息。当我将鼠标悬停在rec.Account上时,它会显示我读过的csv文件中的值,但是当我将鼠标悬停在test [0]上时,其值为null。由于某种原因,变量数组没有取值,我该如何排序呢?
感谢您的时间。
答案 0 :(得分:2)
试试这个:
rec = new Record(name, age, dob, sex, country );
webservicename.singlesummary[] test = new webservicename.singlesummary[1];
webservicename.singlesummary result = new webservicename.singlesummary();
result.account = rec.name;
result.actualy = rec.age;
result.commitment = dob;
result.costCentre = sex;
result.internalCostCentre = country;
test[0] = result;
答案 1 :(得分:0)
您需要先初始化实例:
rec = new Record(name, age, dob, sex, country );
webservicename.singlesummary[] test = new webservicename.singlesummary[1];
test[0] = new webservicename.singlesummary(); // extra line for your code
test[0].name= rec.name;
test[0].age = rec.age;
test[0].dob = dob;
test[0].sex = sex;
test[0].country = country;
显然,如果你需要一个数组,并且你的长度大于1,你可以在for ... next循环中替换除了第一行和第二行之外的所有行,并将ith
元素作为索引。
我注意到,您使用[0]
(以及创建长度为1的数组)将数据索引到数组中,这对我来说似乎毫无意义,您可以使用单个实例:
rec = new Record(name, age, dob, sex, country );
webservicename.singlesummary test = new webservicename.singlesummary();
test.name= rec.name;
test.age = rec.age;
test.dob = dob;
test.sex = sex;
test.country = country;
如果您使用长度为1的数组的原因是因为您调用的服务只接受数组/项目列表,则您始终可以在通话期间创建一个:
wbsvcProxy.MethodCall(new List<singlesummary>() { test });
在我看来,这在整个代码中更具可读性,因为您只需在调用方法时构建数组/列表,并从其余代码中删除所有时髦的[0].
语法(如果你的方法不需要它,那么不要紧,最后一点)