2013-06-30 24 views
8

सत्यापन सेट करने के लिए मैं शुरू में पता चल सके कि एक पाठ बॉक्स रिक्त है के साथ कुछ समस्याओं का सामना करना पड़ा का प्रयास करते समय है, मैंक्या के बीच ("") अंतर और (शून्य)

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" 
     } 
    } 

का उपयोग कर की कोशिश की, लेकिन यह काम नहीं किया , जब तक मैं इस

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

मेरा प्रश्न करने की कोशिश की मैं ("") के बीच का अंतर और (शून्य) जानना चाहते हैं और यही कारण है अशक्त काम नहीं कर रहा था।

अग्रिम

+3

['string.IsNullOrEmpty()'] (http://msdn.microsoft.com/en-us/library/system.string.isnullorempty.aspx) आपका मित्र है, क्योंकि उनका इलाज करना बहुत आम है सत्यापन उद्देश्यों के लिए वही। – millimoose

+4

"" का मतलब खाली कप है। शून्य का मतलब कुछ भी नहीं है – Dilshod

उत्तर

11

0 और एक खाली सरणी के बीच अंतर के रूप में ही धन्यवाद; सब कुछ। वे अलग-अलग मूल्य हैं। "" एक खाली स्ट्रिंग है, और टेक्स्ट के रूप में यह एक खाली टेक्स्टबॉक्स है। null कोई मूल्य नहीं है, और यह नहीं है कि रिक्त टेक्स्टबॉक्स में Text है।

+1

स्पष्टीकरण –

1

null बस इसका मतलब है कि ऑब्जेक्ट (इस मामले में, textLogin.Text ऑब्जेक्ट) मौजूद नहीं है। इस मामले के लिए, textLogin ऑब्जेक्ट मौजूद नहीं हो सकता है। इस प्रकार textLogin ऑब्जेक्ट इस मामले में शून्य नहीं है, और इस प्रकार textLogin.Text शून्य नहीं हो सकता है।

"" दूसरी ओर एक खाली स्ट्रिंग का अर्थ है, जिसका अर्थ है कि टेक्स्टबॉक्स के पाठ में कुछ भी नहीं है। यानी textLogin.Text में इसके भीतर कोई वर्ण नहीं है।

3

System.String डेटा प्रकार .NET में class, एक संदर्भ प्रकार है। तो एक खाली स्ट्रिंग ("" या string.Empty) शून्य लंबाई वाले मान का संदर्भ है, जबकि null वास्तविक मान का संदर्भ नहीं देता है, इसलिए मान संदर्भों का उपयोग करने का कोई भी प्रयास विफल हो जाएगा।

उदाहरण के लिए:

string emptyString = ""; 
string nullString = null; 

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

मैं आपको अपने सत्यापन कोड में IsNullOrEmpty (या IsNullOrWhiteSpace) का उपयोग, दोनों ही मामलों को संभालने के लिए सलाह देते हैं:

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

स्पष्टीकरण के लिए धन्यवाद स्पष्टीकरण –

4

"" कोई रिक्त स्ट्रिंग बनाम null है जो का मतलब है "अस्तित्व में नहीं है"।

आपके मामले में, आपने पहली बार name की तुलना "अस्तित्व में नहीं" की तुलना में की थी जो गलत था क्योंकि name मौजूद था। फिर आपने खाली स्ट्रिंग के लिए name की तुलना की जो सत्य है क्योंकि इसमें खाली स्ट्रिंग का मान है।

+0

स्पष्टीकरण के लिए धन्यवाद –

0

आप टेक्स्ट बॉक्स इनपुट सत्यापन करने के लिए IsNullOrWhiteSpace का उपयोग कर सकते हैं। यह शून्य, खाली स्ट्रिंग या सफेद स्थान (टैब, स्थान, आदि) के लिए जांचता है। http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

2

TextBox.Text का डिफ़ॉल्ट मान String.Empty या "" अशक्त नहीं है। तो आपका पहला कोड काम नहीं किया। null यह इंगित करने के लिए है कि कोई वस्तु किसी भी चीज़ को इंगित नहीं करती है, इसे किसी भी स्मृति के साथ आवंटित नहीं किया जाता है।

0

सरल, "" का वैध मान है i.e. String.Empty लेकिन null कोई मूल्य नहीं है।

0

अंतर "" साधन और रिक्त स्ट्रिंग लेकिन null मतलब है कि यह

1

मौजूद नहीं है आम आदमी की अवधि में, null मूल्य की कमी का मतलब है और "" मतलब शून्य लंबाई स्ट्रिंग है, जो एक ही बात नहीं है। सॉफ़्टवेयर का कुछ टुकड़ा हो सकता है जो null स्ट्रिंग और "" समान रूप से उदा। Console.WriteLine, लेकिन यह अभी भी उन्हें एक ही चीज़ नहीं बनाता है।

कड़ाई से बोलते हुए, "" == null अभिव्यक्ति false डिज़ाइन द्वारा है। नेट ढांचे में String प्रकार की समानता तुलना == operator overloading, जो null"" के रूप में बराबर का इलाज नहीं करता है काम करता है।

संबंधित मुद्दे