2013-06-30 68 views
8

Durante il tentativo di impostare i Validations inizialmente incontrato alcuni problemi con controllare se una casella di testo è nullo, ho provato utilizzandoQual è la differenza tra ("") e (null)

private void btnGo_Click(object sender, EventArgs e) 
    { 
     string name = textLogin.Text; 
     if (name == null) 
     { 
      labelError.Visiblle = true; 
      labelError.Text = "Field Cannot be Left Blank" 
     } 
    } 

ma non ha funzionato , fino a quando ho provato questo

private void btnGo_Click(object sender, EventArgs e) 
    { 
     string name = textLogin.Text; 
     if (name == "") 
     { 
      labelError.Visiblle = true; 
      labelError.Text = "Field Cannot be Left Blank" 
     } 
    } 

la mia domanda è che voglio conoscere la differenza tra ("") e (null) e perché non funzionava nulla.

Grazie in anticipo

+3

['string.IsNullOrEmpty()'] (http://msdn.microsoft.com/en-us/library/system.string.isnullorempty.aspx) è tuo amico, dal momento che è così comune volerlo trattare lo stesso per scopi di convalida. – millimoose

+4

"" significa tazza vuota. null significa nulla – Dilshod

risposta

11

Lo stesso come la differenza tra 0 e un array vuoto; qualunque cosa. Sono valori diversi. "" è una stringa vuota, ed è ciò che una casella di testo vuota contiene come testo è tutto. null è alcun valore, e non è ciò che una casella di testo vuota ha come Text.

+1

Grazie per la clearificazione –

1

null significa semplicemente che l'oggetto (in questo caso, l'oggetto textLogin.Text) non esiste. Affinché questo sia il caso, l'oggetto textLogin non può esistere. Così l'oggetto textLogin non è nullo in questo caso, e quindi textLogin.Text non può essere nullo.

"" d'altra parte significa una stringa vuota, il che significa che non v'è nulla nel testo della casella di testo. Ad esempio textLogin.Text non contiene alcun carattere al suo interno.

3

Il tipo di dati System.String in .NET è un class, un tipo di riferimento. Quindi una stringa vuota ("" o string.Empty) è un riferimento ad un valore di lunghezza zero, mentre null non fa riferimento ad un valore reale, così qualsiasi tentativo di accedere al valore fa riferimento fallirà.

Ad esempio:

string emptyString = ""; 
string nullString = null; 

Console.WriteLine(emptyString.Length); // 0 
Console.WriteLine(nullString.Length); // Exception! 

mi consiglia di utilizzare IsNullOrEmpty (o IsNullOrWhiteSpace) nel codice di convalida, per gestire entrambi i casi:

if (string.IsNullOrEmpty(name)) 
{ 
    labelError.Visiblle = true; 
    labelError.Text = "Field Cannot be Left Blank" 
} 
+0

Grazie mille per la chiarificazione –

4

"" è una stringa vuota vs null che significa "non esiste".

Nel tuo caso, hai prima confrontato name in "non esiste" che era falso perché name esisteva. Quindi hai confrontato name in una stringa vuota che è vera perché ha il valore di una stringa vuota.

+0

Grazie per il chiarimento –

2

Il valore predefinito di TextBox.Text è String.Empty o "" non nullo. Quindi il tuo primo codice non ha funzionato. null è solo per indicare che un oggetto non punta a nulla, non è allocato con alcuna memoria.

0

Semplice, "" ha un valore valido, ad esempio String.Empty ma null non ha alcun valore.

0

La differenza è che "" mezzi e stringa vuota ma null significa non esiste

1

In termini profani, null mezzi privi di valore e "" significare stringa di lunghezza zero, che non è la stessa cosa. Potrebbero esserci alcuni software che trattano la stringa null e "" ad es. Console.WriteLine, ma ancora non li rende la stessa cosa.

In pratica, l'espressione "" == null è false in base alla progettazione. Il confronto di uguaglianza del tipo String nel framework .NET funziona con == operator overloading, che non considera null uguale a "".

Problemi correlati