2016-06-20 6 views
0

kann ich den Instanznamen innerhalb des Initialisierungsblocks angeben. Ich erhalte den Fehler, während ich den folgenden Code benutze. „Verwendung von nicht zugewiesenen lokalen Variablen“Fehler im Initiate-Block: Verwendung der nicht zugewiesenen lokalen Variablen

Codeblock

Item item = new Item() 
{ 
    Qty1 = item.Qty1 + item.Qty2 
} 
+0

nein ist nicht gültig, Sie verweisen auf eine Variable, die noch nicht deklariert ist 'item' – Sherlock

+0

Stellen Sie sicher, dass Sie die Variablen qty1 und qty2 mit Werttypen deklarieren, bevor Sie sie zuweisen (z. B. int). –

+0

@HammadNasir haben Sie versucht und der gegebenen Antworten? – fubo

Antwort

0

Angenommen, Sie eine Item-Klasse haben:

public class Item 
{ 
    // use constructor 
    public Item() 
    { 
     // set your default values here 
     this.Qty1 = 0; // example 
     this.Qty2 = 0; 
    } 

    // declare both quantity item properties here (including nullables) 
    public int Qty1 { get; set; } 
    public int Qty2 { get; set; } 
} 

Dann Zugang Eigentum innerhalb der Klasse, übernehmen hatten die Werte gesetzt worden ist :

Item item = new Item() 
{ 
    Qty1 = item.Qty1 + item.Qty2 
} 

Um NullReferenceExcepti zu verhindern Sie müssen int als int? deklarieren, wenn Sie Qty1 innerhalb des Instanziierungsblocks zuweisen.

bearbeiten: Ich sehe OP mehrere Konstrukteure so genannte müssen, eine mit leeren Parameter für Standardwerte zuweisen und eine für die Zugabe zu Qty1 Eigenschaft ausführen:

public Item(int Qty1, int Qty2) : this() 
{ 
    this.Qty1 = Qty1 + Qty2; 
} 

und nennen es:

Item item = new Item(Qty1, Qty2); // assume Qty1 & Qty2 are method parameters here 

CMIIW.

Verwandte Themen