2010-12-20 4 views
0

ich folgendes Problem -Variable nimmt nicht auf Werte in 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; 

Wenn ich das Debuggen starten Sie es auf den ersten Test stoppt [0] Zeile mit einem ‚Nullreferenceexception uhandled wurde‘ Nachricht. Wenn ich die Maus über das rec.Account halte, wird der Wert aus der CSV-Datei angezeigt, die ich gelesen habe. Wenn ich jedoch den Mauszeiger über test [0] halte, ist der Wert null. Aus irgendeinem Grund nimmt das variable Array keine Werte an. Wie kann ich das sortieren?

Danke für Ihre Zeit.

+0

'rec.Account' meinst du' rec.name '? –

+0

was ist singlesummary [1]? und warum Index 0 und Index I verwenden? – pyCoder

Antwort

2

Try this:

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

Sie müssen zuerst die Instanz initialisieren:

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, wenn Sie ein Array benötigen und Sie haben Länge größer als eins ist, könnten Sie ersetzen alle, aber Linien ein und zwei oben drinnen für eine ... nächste Schleife und Index zum ith Element.

ich aber feststellen, dass Sie mit [0] in das Array sind die Indizierung (und ein Array der Länge 1 zu schaffen), die mir sinnlos scheint, man könnte genauso gut eine einzelne Instanz verwenden:

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; 

Wenn der Grund, warum Sie eine eine Reihe von Länge verwenden ist, da der Dienst nur ein Array/Liste der Elemente akzeptiert aufrufen, können Sie immer eine während des Gesprächs erstellen:

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

meiner Meinung nach, ist dies besser lesbar in Ihrem Code, da Sie nur das Array/die Liste erstellen, wenn Sie das tun e ruft die Methode auf und entfernt alle funky [0]. Syntax aus dem Rest Ihres Codes (Wenn Ihre Methode es nicht erfordert, dann kümmern Sie sich um dieses letzte Bit)

+0

Entschuldigung, ich musste die Frage bearbeiten, die ich einen Fehler gemacht habe, wenn Sie das Update betrachten könnten, würde es schätzen – Ebikeneser

+0

Ich habe Ihre Bearbeitung gesehen, überprüfen Sie meinen Code. Ich mache zwei Dinge, zuerst initialisiere ich das Array, zweitens initialisiere ich auch das nullte '[0]' Element im Array. Sie müssen beide Schritte ausführen, wenn Sie ein Array verwenden. – Nate

+0

danke für deine Eingabe wird es dir gefallen! – Ebikeneser