2016-06-23 22 views
1

Ich habe diesen Code bekam einen int val auf 0 gesetzt wird, wenn es null ist:Warum wird nach einem Null-Test ein int auf 0 gesetzt?

if (null == frbdcbl.QtyOrdered) 
{ 
    frbdcbl.QtyOrdered = 0; 
} 

... aber die Zuordnung wird abgeblendet, als ob eine solche Operation strittig ist. Warum sollte das sein? ! Immerhin null = 0.

Der Wert überprüft wird nicht über einen Standardwert von 0 oder so:

public class FillRateByDCByLocation 
{ 
    . . . 
    public int QtyOrdered { get; set; } 
} 

Der Code mit der Zuordnung abgeblendet (AddFillRateByDCByLocationRow (()) aufgerufen, wie so:

foreach (FillRateByDCByLocation frbdcbl in _fillRateByDCByLocGroupedSortedSummed) 
{ 
    AddFillRateByDCByLocationRow(frbdcbl); 
} 

Antwort

9

Ist es ein Nullable-int Wenn nicht, seine ausgegraut, da int ist nie null sein kann

+2

Und Mitgliedsvariablen (die es ist) werden auf ihren Standardwert initialisiert, der in diesem Fall 0 ist, wenn die Klasse instanziiert wird. – hatchet

1

QtyOrdered nichtsein kann?.seit null ist kein gültiger Wert für eine int, gleich für irgendeine struct.

+2

Sie haben gerade SledgeHammers Antwort kopiert. – nhouser9

+0

@ nhouser9: Ich schrieb eine Antwort auf die bearbeitete Version, die keine veraltete Frage enthielt, und gab einen Ausdruck, der verwendet werden könnte, um zu erkunden, ob der Fragesteller mehr wissen wollte. – Guvante

1

Werttypen (int, long, enum usw.) dürfen nicht null sein. Zuweisung wird nie erreicht und ist daher ausgegraut.