2015-09-29 12 views
8

मैं व्यक्ति का मध्य नाम वैकल्पिक बनाना चाहता हूं। मैं सी # नेट कोड का पहला दृष्टिकोण उपयोग कर रहा हूं। पूर्णांक डेटा के लिए बस "?" का उपयोग कर इसे आसान बनाएं ऑपरेटर को शून्य में बनाने के लिए। मैं अपने स्टिंग वैरिएबल को शून्य बनाने के लिए एक रास्ता तलाश रहा हूं। मैंने खोजने की कोशिश की लेकिन इसे नामुमकिन बनाने का तरीका नहीं मिला।स्ट्रिंग प्रकार को शून्य बनाने के लिए कैसे करें

नीचे मेरा कोड है। कृपया मुझे सुझाव दें कि इसे कैसे बेकार कर दें।

public class ChildrenInfo 
{ 
    [Key] 
    public int ChidrenID { get; set; } 

    [Required] 
    [Display(Name ="First Name")] 
    [StringLength(50,ErrorMessage ="First Name cannot exceed more than 50 characters")] 
    [RegularExpression(@"^[A-Z]+[a-z]*$",ErrorMessage ="Name cannot have special character,numbers or space")] 
    [Column("FName")] 
    public string CFName { get; set; } 

    [Display(Name ="Middle Name")] 
    [RegularExpression(@"^[A-Z]+[a-z]*$",ErrorMessage ="Middle Name cannot have special character,numbers or space")] 
    [StringLength(35,ErrorMessage ="Middle Name cannot have more than 35 characters")] 
    [Column("MName")] 
    public string? CMName { get; set; } 





} 

उत्तर

26

स्ट्रिंग एक संदर्भ प्रकार है और हमेशा निरर्थक है, आपको कुछ विशेष करने की आवश्यकता नहीं है। यह निर्दिष्ट करना कि एक प्रकार शून्य है केवल मूल्य प्रकारों के लिए आवश्यक है।

2

स्ट्रिंग्स सी # में वैसे भी शून्य हैं क्योंकि वे संदर्भ प्रकार हैं। आप बस public string CMName { get; set; } का उपयोग कर सकते हैं और आप इसे शून्य पर सेट करने में सक्षम होंगे।

+0

हर प्रकार एक है सी # (विरासत के माध्यम से) में वस्तु। कारण 'स्ट्रिंग शून्य नहीं है क्योंकि वे एक संदर्भ प्रकार के उदाहरण हैं। – Kapol

+0

धन्यवाद, यह एक उपयोगी स्पष्टीकरण है। मैंने तदनुसार अपना जवाब अपडेट कर लिया है। – Tim

0

string प्रकार एक संदर्भ प्रकार है, इसलिए यह डिफ़ॉल्ट रूप से शून्य है। आप केवल मूल्य प्रकार के साथ Nullable<T> का उपयोग कर सकते हैं।

public struct Nullable<T> where T : struct 

जिसका अर्थ है कि जेनेरिक पैरामीटर के लिए जो कुछ भी बदल दिया गया है, यह एक मान प्रकार होना चाहिए।

+0

मुझे लगता है कि आप संरचना के बजाय मूल्य प्रकार का मतलब था? – Frans

+0

@ निश्चित रूप से फ्रांसीसी। धन्यवाद। – Kapol

1

संदर्भ प्रकारों को निरर्थक बनाना संभव नहीं है। एक मूल्यवान संरचना में केवल मूल्य प्रकारों का उपयोग किया जा सकता है। किसी मान प्रकार के नाम पर एक प्रश्न चिह्न जोड़ना इसे शून्य बनाता है। ये दो पंक्तियां समान हैं:

int? a = null; 
Nullable<int> a = null; 
0

जैसा कि अन्य ने इंगित किया है, स्ट्रिंग हमेशा सी # में शून्य है। मुझे संदेह है कि आप सवाल पूछ रहे हैं क्योंकि आप मध्य नाम को शून्य या खाली छोड़ने में सक्षम नहीं हैं? मुझे संदेह है कि समस्या आपके सत्यापन गुणों के साथ है, सबसे अधिक संभावना RegEx। मैं अपने सिर में RegEx को पूरी तरह से पार्स करने में सक्षम नहीं हूं लेकिन मैं सोचता हूं आपका रेगेक्स वर्तमान चरित्र पर मौजूद है। मैं गलत हो सकता था - रेगेक्स मुश्किल है। किसी भी मामले में, अपने सत्यापन गुणों पर टिप्पणी करने का प्रयास करें और देखें कि यह काम करता है, फिर उन्हें एक समय में एक में जोड़ें।

0

आपको कुछ भी करने की आवश्यकता नहीं है, मॉडलबाइंडिंग बिना किसी समस्या के परिवर्तनीय हो जाएगी।

2

System.String एक संदर्भ प्रकार ताकि आप

Nullable<string> 

की तरह कुछ करने की ज़रूरत नहीं है यह पहले से ही एक शून्य मान (शून्य संदर्भ) है:

string x = null; // No problems here 
संबंधित मुद्दे

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