18 Stimmen

Die beste Art, eine NULL zu behandeln

An der Spitze meiner Funktionen, die ich versuche, den besten Weg, um eine Null kommen in meine Verfahren in C# zu behandeln. Was ist der beste Weg für die Überprüfung und Behandlung der Null und warum? Ich habe den kompletten Code von dem, was ich gerade verwende, hinzugefügt und Resharper sagt mir, dass ich Option 1 verwenden soll. Normalerweise tue ich, was es sagt, da ich verstehe, warum es effizienter ist. Dieses Mal bin ich mir aber nicht sicher, also muss ich fragen.

Option #1
if (sender == null) return;

// Code goes here

or

Option #2
if (sender != null)
{ 
     // Code goes here
}

Complete Code
        private void EmployeeMouseHoverToolTip(object sender, EventArgs e)
        {
            if (sender != null)
            {
                var sUserIdentifier = ((C1TextBox)sender).Text;
                var userIdentifier = Guid.Empty;
                if (Utilities.IsGuid(sUserIdentifier))
                {
                    userIdentifier = new Guid(sUserIdentifier);
                }

                var toolTipText = Utilities.UserIdentifierToName(userIdentifier);
                c1SuperTooltip.SetToolTip(sender as C1TextBox, toolTipText);
            }
        }

3voto

Evil Andy Punkte 1702

Ich persönlich bevorzuge die erste Option

if (sender == null) return;

Dies verringert die Verschachtelung und erhöht die Lesbarkeit.

1voto

Guy Punkte 185

Ich entscheide mich in der Regel für Option 1. Ich finde sie sauberer und ihre Bedeutung ist klarer. Derjenige, der den Code liest, weiß, dass wir, wenn wir die Null-Prüfung sicher hinter uns gebracht und beendet haben, keine Chance haben, später mit einem Null-Wert im Absender herumzuspielen.

1voto

Rob Vermeulen Punkte 1856

Resharper bevorzugt Option 1, da es sich um eine Vorbedingungsprüfung handelt. Wenn die Vorbedingungen nicht erfüllt sind, wird eine vorzeitige Rückkehr durchgeführt.

Normalerweise ist eine frühe Rückkehr destruktiv für die Lesbarkeit des Codes, aber in diesem Fall ist sie sehr gut lesbar.

Auf diese Weise können Sie leicht zusätzliche Vorabprüfungen hinzufügen, wie z. B. die Überprüfung des Inhalts von EventArgs e, ohne den Code der Hauptfunktion überarbeiten zu müssen.

1voto

0x49D1 Punkte 8231

Ich bevorzuge

if (sender == null) return;

Damit gibt es weniger verschachtelte Operationen im Code und ein frühzeitiges Beenden, wenn eine Null vorhanden ist.

0voto

Ankit Punkte 4529

Können Sie die DBNull-Klasse verwenden, während Sie den Wert einem Objekt zuweisen...

UserName = DBNull.Value != reader["UserName"] ? reader["UserName"].ToString() : default(string);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X