Betrachten Sie den Code, der geschrieben wird, wenn beim Zuweisen eines Werts zu einer verteilten Zelle eine NullReferenceException auftritt. Ich habe den Null-Check hinzugefügt, ohne tief nachzudenken, aber es gibt viele Dinge, über die ich nachdenken muss.
Ein Code, der den von der DB im Spread erhaltenen Wert anzeigt und der Wert kann null sein oder nicht. Da es sich bei dem Spread um ein Produkt von Drittanbietern handelt, haben wir ihn durch unsere eigene Klasse ersetzt. Eines Tages trat an dem Punkt, an dem einer Zelle ein Wert zugewiesen wurde, eine NullReferenceException auf.
public void Main(SpreadCell cell)
{
int? dbValue = null;
//Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.
//NullReferenceException tritt auf.
cell.Value = dbValue.Value;
}
/**Zellenobjekt verbreiten**/
private class SpreadCell
{
public Object Value { get; set; }
}
public void main(SpreadCell cell) {
Integer dbValue = null;
//Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.
//NullPointErexception tritt auf.
cell.setValue(dbValue.intValue());
}
Ich füge einen Null-Check hinzu, ohne nachzudenken, und es gibt keinen anderen. Beachten Sie, dass Sie vor allem keine Nullprüfung benötigen.
public void Main(SpreadCell cell)
{
int? dbValue = null;
//Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.
//Weisen Sie einen Wert nur zu, wenn er nicht Null ist.
if (dbValue != null)
{
cell.Value = dbValue.Value;
}
}
public void main(SpreadCell cell) {
Integer dbValue = null;
//Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.
//Weisen Sie einen Wert nur zu, wenn er nicht Null ist.
if (dbValue != null) {
cell.setValue(dbValue.intValue());
}
}
Es ist kein Problem, wenn der nullfähige Typ so ersetzt wird, wie er ist. Wenn Sie hundert Schritte angeben und eine Nullprüfung durchführen, geben Sie bitte den Zelleninitialisierungscode ein.
public void Main(SpreadCell cell)
{
int? dbValue = null;
//Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.
//Sie können es so ersetzen, wie es ist.
cell.Value = dbValue;
//Wenn Sie die if-Anweisung verwenden, initialisieren Sie sie bitte.
cell.Value = null;
if (dbValue != null)
{
cell.Value = dbValue.Value;
}
}
public void main(SpreadCell cell) {
Integer dbValue = null;
//Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.
//Sie können es so ersetzen, wie es ist.
cell.setValue(dbValue);
//Wenn Sie die if-Anweisung verwenden, initialisieren Sie sie bitte.
cell.setValue(null);
if (dbValue != null) {
cell.setValue(dbValue.intValue());
}
}
Sie sollten nicht einfach eine Nullprüfung hinzufügen, ohne darüber nachzudenken, nur weil Sie eine NullReferenceException erhalten. Wenn Sie eine Nullprüfung benötigen, vergessen Sie den Initialisierungscode nicht.
Für diejenigen, die sich mit diesen Hindernissen befassen, mache ich mir Sorgen, dass andere Codes ordnungsgemäß behoben wurden.
Vorheriger Artikel (nutzlose Verarbeitung für die Sammlung)
[Nächster Artikel (Bool Type Handling)] (http://qiita.com/csharpisthebest/items/b0c44764948e1334e94a)
Recommended Posts