2010-12-20 72 views
0

我有以下问题 -变量在C#不承担值

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被uhandled”消息。当我将鼠标悬停在rec.Account上时,它显示我读取的csv文件的值,但是当我将鼠标悬停在测试[0]上时,其值为空。出于某种原因,变量数组没有取值,我该如何排序?

谢谢你的时间。

+0

'rec.Account'您的意思是'rec.name '? – 2010-12-20 16:29:49

+0

什么是单数[1]?为什么使用索引0和索引i? – pyCoder 2010-12-20 16:30:02

回答

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; 
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; 

Obvously,如果你需要一个数组,你有长度大于一,你可以全部替换,但行一个和两个以上的内部for ...下一个循环和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; 

如果您正在使用一个长度的数组的原因是因为你只能调用服务接受项目的数组/列表,你可以在通话过程中始终创建一个:

wbsvcProxy.MethodCall(new List<singlesummary>() { test }); 

在我看来,这是更具可读性在你的代码中,因为你只在你的时候创建数组/列表e调用该方法,并从代码的其余部分中删除所有时髦的语法[0].(如果您的方法不需要它,则不必介意这最后一位)

+0

对不起,我不得不编辑我犯了一个错误的问题,如果你可以看看更新,将不胜感激 – Ebikeneser 2010-12-20 16:33:07

+0

我看到你的编辑,检查我的代码。我做了两件事,首先初始化数组,然后我初始化数组中的第零个[[0]]项。如果您使用数组,则需要执行两个步骤。 – Nate 2010-12-20 16:34:22

+0

感谢您的意见,它会给它一个! – Ebikeneser 2010-12-20 18:27:18