2012-02-10 11 views
132

मुझे त्रुटि क्यों मिलती है "प्रकार 'स्ट्रिंग' एक गैर होना चाहिए - सामान्य प्रकार या विधि 'System.Nullable' में पैरामीटर 'टी' के रूप में उपयोग करने के लिए उपयोग करने योग्य मूल्य प्रकार?प्रकार 'स्ट्रिंग' सामान्य प्रकार या विधि 'पैरामीटर में पैरामीटर टी के रूप में उपयोग करने के लिए' स्ट्रिंग 'एक गैर-शून्य प्रकार होना चाहिए। शून्य <T>'

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 
using Universe; 

namespace Universe 
{ 
    public class clsdictionary 
    { 
     private string? m_Word = ""; 
     private string? m_Meaning = ""; 

     string? Word { 
      get { return m_Word; } 
      set { m_Word = value; } 
     } 

     string? Meaning { 
      get { return m_Meaning; } 
      set { m_Meaning = value; } 
     } 
    } 
} 
+15

'स्ट्रिंग' पहले से ही शून्य है। –

+19

इस प्रश्न को -1 प्राप्त करने का कोई कारण नहीं है। एक डुप्ली होने की संभावना के अलावा। –

उत्तर

164

अपने कोड में सभी स्थानों में उपयोग string बजाय string?

Nullable<T> प्रकार की आवश्यकता है कि टी एक गैर-शून्य मूल्य प्रकार है, उदाहरण के लिए int या DateTime। संदर्भ प्रकार जैसे string पहले से ही शून्य हो सकता है। Nullable<string> जैसी चीजों को अनुमति देने में कोई बात नहीं होगी, इसलिए इसे अस्वीकार कर दिया गया है।

इसके अलावा, अगर आप सी # 3.0 का उपयोग कर रहे या बाद में आप auto-implemented properties का उपयोग करके अपने कोड को आसान बनाने में कर सकते हैं:

public class WordAndMeaning 
{ 
    public string Word { get; set; } 
    public string Meaning { get; set; } 
} 
+1

एम। बाबॉक, जब मैं m_Word = null करता हूं, तो यह त्रुटियां, कोई सुझाव? मैं वर्ड को शून्य होने में सक्षम होना चाहता हूं। – MiscellaneousUser

+1

@ MiscellaneousUser: आपको क्या त्रुटि संदेश मिलता है? क्या आप उस सटीक फ़ाइल को पोस्ट कर सकते हैं जिसे आपने संकलित करने का प्रयास किया था? अनुमान लगाना मुश्किल है कि आपकी गलती आपके कोड की केवल एक पंक्ति को देखने से है। मेरा मतलब यह हो सकता है कि आप अर्द्ध-कोलन खो रहे हैं ... लेकिन शायद आप इसे कॉपी करने के लिए भूल गए हैं ... इसे अनुमानित करने के अलावा कुछ भी नहीं है जब तक आप संकलित करने की कोशिश नहीं करते कोड को पोस्ट करते हैं। –

+0

सहायता के लिए धन्यवाद, इस पोस्टिंग को http://stackoverflow.com/questions/187406/c-sharp-nullable-string-error देखा और यह देख सकता है कि प्रश्न चिह्न केवल मूल्य प्रकारों के लिए है। – MiscellaneousUser

46

string एक संदर्भ प्रकार, एक वर्ग है। आप केवल Nullable<T> या T? सी # सिंटेक्टिक चीनी गैर-शून्य मूल्य प्रकारों जैसे int और Guid के साथ उपयोग कर सकते हैं। - मेटाडाटा प्रदान करता है

string lookMaNoText = null; 
3

एक बहुत ही विशेष कारण प्रकार Nullable<int> लिए Nullable पर अपना कर्सर रखें और मारा F12:

विशेष रूप से, string के रूप में एक संदर्भ प्रकार, प्रकार string की अभिव्यक्ति को पहले से ही अशक्त हो सकता है कारण (ध्यान दें struct बाधा):

public struct Nullable<T> where T : struct 
{ 
... 
} 

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+4

ध्यान दें कि 'Nullable > 'अस्वीकृत है, भले ही' Nullable 'एक संरचना है। –

+0

यह दिलचस्प है। क्या यह संकलक में "हार्ड-कोडेड" है? यह एक विशिष्ट संरचना से कैसे बाधित है (Nullable >)? - संपादित करें अब मैं स्पष्ट रूप से देखता हूं यह विशेष है - संकलन त्रुटि ... एक गैर-शून्य मूल्य प्रकार होना चाहिए .... –

11

Syst em.String पहले से ही शून्य है: आपको इसे इस तरह घोषित करने की आवश्यकता नहीं है (स्ट्रिंग? myStr) गलत है।

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