变量不接受C#中的值

时间:2010-12-20 16:26:21

标签: c# xml variables

我有以下问题 -

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。由于某种原因,变量数组没有取值,我该如何排序呢?

感谢您的时间。

2 个答案:

答案 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].语法(如果你的方法不需要它,那么不要紧,最后一点)