2013-05-03 6 views
5

नेट कन्वर्ट करने के लिए डेटा प्रकार परिवर्तित करने के लिए कई तरह से जानता है:वर्दी विधि डेटा प्रकार

  • Convert स्तरीय;
  • (Try)Parse और ToString, आदि जैसे किसी प्रकार के अंदर कार्य;
  • इंटरफेस का कार्यान्वयन IConvertable;
  • TypeConverter;
  • निहित और स्पष्ट रूपांतरण ऑपरेटर;
  • क्या मुझे कोई और याद आ रहा है?

तो यदि एक डेटाटाइप को दूसरे में परिवर्तित कर रहा हूं, तो मुझे दोनों प्रकारों को जानना होगा और मुझे यह जानने की आवश्यकता है कि कौन सी रूपांतरण विधि का उपयोग करना है। और यह बहुत बुरा हो जाता है अगर उन दो प्रकारों में से एक (या दोनों) एक सामान्य प्रकार है।

तो मेरा सवाल है: मैं एक डेटा प्रकार को दूसरे में परिवर्तित करने के लिए .NET में वर्दी (सामान्य) तरीका है, जो अन्य सभी सीमित विधियों का उपयोग कर सकता है?

उत्तर

2

प्रकारों के बीच परिवर्तित करने के लिए एक अच्छा, सामान्य तरीका Convert.ChangeType के साथ है। यहाँ कैसे आप इसे इस्तेमाल कर सकते हैं एक सामान्य परिवर्तित विधि लिखने के लिए एक उदाहरण है:

public static TResult Convert<TResult>(IConvertible source) 
{ 
    return (TResult)System.Convert.ChangeType(source, typeof(TResult)); 
} 

यह अन्य Convert तरीकों की तरह, आंतरिक रूप से IConvertible इंटरफ़ेस कहता है।

यह आपके अन्य रूपांतरण विकल्प का इस्तेमाल नहीं होगा:

  • सबसे आम मैं ToString होगा लगता है कि; इसके लिए, आप यह देखने के लिए एक चेक जोड़ सकते हैं कि TResultstring है और यदि ऐसा है, (उचित शून्य जांच के बाद) बस अपने इनपुट पर ToString पर कॉल करें।
  • प्रतिबिंब का उपयोग करके आप जांच कर सकता है के लिए:
    • TypeConverterAttribute
    • (Try)Parse तरीकों, (जो आप आह्वान चाहते हैं) (TypeDescriptor.GetConverter वहाँ से जाने का रास्ता हो रहा है), और
    • अंतर्निहित/स्पष्ट रूपांतरण ऑपरेटरों (तरीकों op_Implicit और op_Explicit है, जो आपको वैसे ही आह्वान करता हूँ)

ये प्रत्येक fai हैं यदि आप प्रतिबिंब के बारे में कुछ जानते हैं तो भरोसेमंद आत्म-व्याख्यात्मक, लेकिन अगर कोई साबित होता है तो मैं विस्तृत कर सकता हूं।

+0

उल्लेख किए गए अन्य रूपांतरण विधियों को संबोधित करने के लिए मेरा उत्तर अपडेट किया गया। –

0

आप उन हवाला देते हैं सभी एक ही
वे हैं नहीं
उठाओ उचित

Convert कक्षा

एक और आधार डेटा प्रकार के लिए एक आधार के डेटा प्रकार रूपांतरित करता है।

पार्स स्ट्रिंग से है

ToString स्ट्रिंग के लिए एक

IConvertible इंटरफ़ेस

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

TypeConverter कक्षा

, अन्य प्रकार के मूल्यों के प्रकार परिवर्तित करने के साथ ही के लिए मानक मूल्यों और subproperties तक पहुँचने का एकीकृत तरीका प्रदान करता है।

हां आपको उस प्रकार को जानने की जरूरत है जिसे आप परिवर्तित कर रहे हैं।
और आपको पता होना चाहिए कि किस प्रकार से आप परिवर्तित कर रहे हैं।

जेनरिक के साथ कोई निर्मित नहीं है।
सबसे अच्छा आप एक विधि प्रदान करते हैं।
लेकिन आपको जेनेरिकों को बदलने की आवश्यकता क्यों है?

आपको लगता है कि एक से अधिक तरीकों से एक बुरी चीज है।
एक ही तरीके से मुझे टिम एस +1
से उत्तर पसंद है लेकिन इसका मतलब यह नहीं है कि मैं इसका कभी भी उपयोग करूंगा।

SQL डेटाबेस से डेटा प्राप्त करने के और भी तरीके हैं।
क्या यह एक बुरी चीज है?

+0

मैं कहां से कहूं? –

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