2010-02-04 7 views
9

की निरर्थक सुविधा के बिना निरर्थक प्रकार कार्यान्वयन यदि हम सी # में यह सुविधा नहीं रखते हैं तो हम सी # में एक शून्य प्रकार को कैसे कार्यान्वित कर सकते हैं?सी #

उत्तर

5

आप एक struct में एक देशी प्रकार लपेट कर सकते हैं (त्वरित उदाहरण आप एक विचार, अपरीक्षित, सुधार की गुंजाइश के बहुत सारे देने के लिए):

public struct NullableDouble { 
    public bool hasValue = false; 
    private double _value; 

    public double Value { 
     get { 
      if (hasValue) 
       return _value; 
      else 
       throw new Exception(...); 
     } 
     set { 
      hasValue = true; 
      _value = value; 
     } 
    } 
} 

जाहिर है, आप ऐसा नहीं करेंगे नए सी # संस्करणों में से वाक्यात्मक चीनी मिल, यानी आप myNullableDouble.hasValue बजाय myNullableDouble == null, आदि उपयोग करने के लिए (एंड्रियास 'टिप्पणी देखें।)

+2

आप तुलना उपयोग कर सकते हैं - जब तक आप जैसे ओवरराइड के रूप में। आवश्यक ऑपरेटर या सही इंटरफ़ेस लागू करें –

0

Nullable एक सामान्य प्रकार है। जेनेरिक के बिना इस तरह एक नामुमकिन लागू करना संभव नहीं है और वास्तव में समझ में नहीं आता है।

0

आप डेटा प्रकार में मौजूदा मानों के व्यापार नियमों को संलग्न किए बिना नहीं कर सकते हैं। जैसे। int.MinValue को प्लेसहोल्डर के रूप में उपयोग किया जा सकता है, लेकिन अगर आपको इस मान की आवश्यकता है तो क्या होगा? यदि आपके पास ऐसा नियम है जहां सभी मूल्य सकारात्मक हैं, तो यह काम कर सकता है, लेकिन "शून्य" के रूप में नहीं।