Frage

Ich möchte die erste Zeile entfernen:

                 !string.IsNullOrEmpty(cell.Text) 

Wird dies zu Problemen führen?

Ich bin in einem Code darauf gestoßen:

                if ((id % 2 == 0)
                    && !string.IsNullOrEmpty(cell.Text)
                    && !string.IsNullOrEmpty(cell.Text.Trim())
                    )

Ich denke, der erste string.IsNullOrEmpty würde bei einem String mit Leerzeichen false zurückgeben
und die Zeile mit Trim() kümmert sich darum, sodass das erste IsNullOrEmpty nutzlos ist

Aber bevor ich die Leine ohne Beschnitt entferne, dachte ich, ich würde sie der Gruppe vorführen.

War es hilfreich?

Lösung

Der erste isnullorepty fängt Null-Werte, bevor sie eine NullReferenceException mit Trim () werfen ().

Es gibt jedoch einen besseren Weg:

generasacodicetagpre.

Andere Tipps

Wenn cell.text null ist, hätten Sie eine Ausnahme ohne diese erste Überprüfung.

In .NET 4.0:

if (id % 2 == 0 && !string.IsNullOrWhiteSpace(cell.Text))
{
    ...
}

In älteren Versionen sollten Sie die beiden Tests beibehalten, denn wenn Sie den ersten und entfernen cell.Text null ist, erhalten Sie beim zweiten Aufrufversuch eine NRE .Trim auf einer Nullinstanz.

Oder Sie könnten auch Folgendes tun:

if (id % 2 == 0 && string.IsNullOrWhiteSpace((cell.Text ?? string.Empty).Trim()))
{
    ...
}

oder noch besser, Sie könnten eine schreiben Erweiterungsmethode für den String-Typ, der dies tut, sodass Sie einfach:

if (id % 2 == 0 && !cell.Text.IsNullOrWhiteSpace())
{
    ...
}

was so aussehen könnte:

public static class StringExtensions
{
    public static bool IsNullOrWhiteSpace(this string value)
    {
        return string.IsNullOrEmpty((value ?? string.Empty).Trim());
    }
}

Ich glaube, der Test soll sicherstellen, dass cell.text nicht zuerst null ist ... Wenn ja, versuchen Sie es, es zu umgehen und nur cell.text.trim () würgen, da Sie nicht mit einem Zierzeichen auf einemNULL-Zeichenfolge.

Warum nicht generakodicetagcode verwenden und die vorherigen zwei Schecks fallen lassen?

Sie können nicht nur die erste isnullorerpty als cell.text entfernen. Dies kann null sein und damit die Anrufe an der Anrufe an der Erfüllung von Werfen und Ausnahme.Verwenden Sie isnullorwhitespace , wenn Sie .NET 4.0 oder verlassenbeide Überprüfungen.

generasacodicetagpre.

Wenn cell.text null ist, wirft der Ausdruck string.isnullororemepty (cell.text.trim ()) eine Ausnahme, da es versucht, die Methode Trim () in der Zelle auszuführen.

viel mehr anzutreffender, wenn der Zustand sein würde: cell.text!= null && cell.text.trim ()!=""

Sie können die Erweiterungsmethode so verwenden:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top