2012-07-29 15 views
5

में पैरामीटर 'टी' के रूप में उपयोग करने के लिए प्रकार (मेरी कक्षा) गैर-शून्य प्रकार होना चाहिए, इसलिए मुझे एक मजेदार कंपाइलर त्रुटि मिल रही है! मैं इसे यहां भी पेस्ट कर दूंगा: "सामान्य विधि में पैरामीटर 'टी' के रूप में उपयोग करने के लिए प्रकार (मेरी कक्षा) गैर-शून्य प्रकार होना चाहिए"एक सामान्य विधि

यह मुझे समझ में नहीं आता है चूंकि मेरी विधि सामान्य नहीं है। यहाँ कैसे मैं अपमानजनक कोड नहीं बोल रहा हूँ है:

 private Item? SearchProduct(string product) 
    { 
     //If this is the first item to be entered into the inventory 
     if (_inventory == null || _inventory._productList.Count == 0) 
     { 
      return null; 
     } 
     //Return the Item's instance if it appears in the inventory. Otherwise return null. 
     return _inventory[product]; 
    } 

मैं मैं अच्छा उपाय यहाँ मेरी सूची क्लास से इंडेक्सर जोड़ देंगे लगता है:

Item? inputtedItem = SearchProduct(txtProduct.Text); 

इस बीच, यहां SearchProduct की परिभाषा है :

 public Item this[string i] 
    { 
     get 
     { 
      Item returnItem; 
      _productList.TryGetValue(i, out returnItem); 
      return returnItem; 
     } 
     set 
     { 
      _productList.Add(i, value); 
     } 
    } 

क्या कोई जानता है कि क्या गलत है?

सहायता के लिए धन्यवाद।

+0

'आइटम' 'संरचना' है? – dtb

+0

'खोज उत्पाद' एक इंटरफ़ेस विधि का कार्यान्वयन है? एक इंटरफेस जिसमें सामान्य पैरामीटर 'टी' हो सकता है जिसके लिए आपने 'आइटम' दर्ज किया है? – Virtlink

+0

मुझे लगता है कि TryGetValue आपकी सामान्य विधि है। _productList का प्रकार वास्तव में क्या है? –

उत्तर

6

मुझे नहीं लगता कि आपको Item? में ? की आवश्यकता है। यदि Item एक कस्टम परिभाषित वर्ग है, तो यह डिफ़ॉल्ट रूप से शून्य हो जाएगा।

+0

मुझे लगता है कि आपने सिर पर नाखून मारा होगा। आइटम संरचना के लिए इस्तेमाल किया जाता था, यही कारण है कि मुझे इसे कमजोर बनाने की जरूरत है। मैं भूल गया कि वर्ग डिफ़ॉल्ट रूप से संदर्भ प्रकार हैं, इसलिए वे हमेशा निरर्थक होते हैं। मुझे देखने दो कि क्या काम बदल रहा है! धन्यवाद – Nick

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