2010-09-20 9 views
7

मैंने इस विषय के बारे में कुछ संबंधित प्रश्न पढ़े हैं, हालांकि उनमें से कोई भी मुझे समझ में नहीं आता है। जैसा कि मैं इसे समझता हूं, कुछ मामलों में आप कास्ट और पार्स का आदान-प्रदान कर सकते हैं और एक ही परिणाम प्राप्त कर सकते हैं।कास्ट बनाम पार्स

वहाँ कुछ सामान्य दिशा निर्देशों निर्णय लेने में मेरी जब एक दूसरे के ऊपर दृष्टिकोण का चयन करने में मदद कर सकते हैं?

+1

कास्टिंग और पार्सिंग बहुत अलग हैं। क्या आप एक उदाहरण दिखा सकते हैं कि आपको लगता है कि उनका उपयोग समान रूप से किया गया था? – Jens

+0

someString.ToString() बनाम (स्ट्रिंग) (कुछ स्ट्रिंग) या लंबा। पर्स (कुछ गणना) बनाम (लंबा) (कुछ गणना) – Kory

उत्तर

7

आप आम तौर पर एक स्ट्रिंग जिसका मूल्य के लिए जो आप परिवर्तित कर रहे हैं प्रकार का मान्य मूल्य का प्रतिनिधित्व करता पर पार्स() का उपयोग करें।

कास्टिंग, दूसरे हाथ पर, आप एक व्युत्पन्न प्रकार का एक उद्देश्य है, लेकिन एक आधार चर में संग्रहीत है, और इसके अधिक विशिष्ट प्रकार के रूप में उपयोग करने की आवश्यकता है जब बेहतर इस्तेमाल किया है।

यही कारण है, अगर आपके पास "1234" आप एक पूर्णांक में पार्स कर सकते हैं() कि। लेकिन अगर आपके पास

object variable = 1234; 

आपको इसे एक int के रूप में वापस लाने के लिए इसे डालना चाहिए।

3

कास्टिंग एक समान प्रकार से एक वस्तु का रूपांतरण की अधिक है। एक अच्छा उदाहरण पूर्णांक के लिए तैरता है, या दशमलव से दोगुना है। पार्सिंग बस यही है; पार्स करने। पार्सिंग की परिभाषा या उपयोग थोड़ा अधिक व्यापक है। आप अपने ऑब्जेक्ट प्रकार में स्ट्रिंग को कन्वर्ट करने के लिए int.Parse या int.TryParse की तरह अपने स्वयं के ऑब्जेक्ट में एक पार्स विधि लिख सकते हैं। पार्सिंग किसी भी स्ट्रिंग से आवश्यक डेटा को इकट्ठा करने के लिए स्ट्रिंग मैनिपुलेशन जैसी चीजों का भी उल्लेख कर सकती है। "पार्सिंग" जरूरी नहीं है कि "कास्टिंग" से संबंधित हो।

कास्टिंग का एक और अच्छा उदाहरण विरासत या इंटरफेस का उपयोग कर रहा है।

public interface ICar { 
    // ... 
} 

public class Corvette : ICar { 
    // ... 
} 

public void Foo() { 
    Corvette mycar = new Corvette(); 
    // Now do a cast 
    ICar = (ICar)mycar; 
} 
3

एक नज़र here, मार्क Gravell के व्यापक जवाब में है (भी परिवर्तित करने के बारे में आप का जवाब देंगे ..)।

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