2011-01-18 24 views
12

संभावित डुप्लिकेट:
Is everything in .NET an object?
How do ValueTypes derive from Object (ReferenceType) and still be ValueTypes?मूल्य प्रकार सिस्टम से प्राप्त होते हैं। ऑब्जेक्ट ... क्यों?

हाय, मैं सिर्फ यह नहीं मिलता है। System.Object (मुझे लगता है) संदर्भ प्रकार है लेकिन .NET में सभी डेटा प्रकार इससे प्राप्त होते हैं। इसके अलावा मूल्य प्रकार भी करते हैं। मुझे यह समझ में नहीं आता है - मूल्य प्रकार का मूल्य स्टैक पर है लेकिन इसे ऑब्जेक्ट से विरासत में मिला है? आशा किसी को भी मदद कर सकता है मुझे समझने की

+1

Possi ब्ली डुप्लिकेट .... http: //stackoverflow.com/questions/436211/is-everything-in-net-an-object/436246 –

+6

आपके सभी प्रकार हमारे हैं! –

उत्तर

5

अपने आप से पूछें कि आप क्यों लगता है कि यह अजीब बात है कि एक प्रकार है कि आम तौर पर स्टैक पर आवंटित किया जाता है System.Object से विरासत हैं और मुझे लगता है कि आप आपके पास उचित कारण तैयार नहीं कर सकते हैं मिल जाएगा।

यदि आपको लगता है कि ऐसा इसलिए है क्योंकि किसी ऑब्जेक्ट का टाइप परिभाषित करता है कि यह कहां आवंटित किया गया है, तो आप गलत हैं। ValueType का सदस्य अपने आवंटन तंत्र को परिभाषित करने के लिए ज़िम्मेदार है? एक stringउदाहरण के लिए, एकobject है: (क्या सदस्य System.Object की, उस बात के लिए)

प्रकार विरासत .NET में शामिल करने के लिए रिश्तों को "एक कि" माना जाता है। नेट दुनिया में सब कुछ एक object आदि

आप Liskov substitution principle के संदर्भ में इस बारे में सोच सकते है, इसलिए एक int एक object, एक double एक object है,: अगर मैं कोड लिखने कि उम्मीद object, मुझे किसी भी से निपटने में सक्षम होना चाहिए कि object -ie कुछ भी है। मेरे कोड एक string, एक int, एक List<int>, साथ समान रूप से सहज होना चाहिए आदि

भी ध्यान रखें कि object की गारंटी देता है कुछ सदस्यों सभी प्रकार इस का एक परिणाम के रूप में है: GetType, ToString, और GetHashCode

+1

-1 यह उल्लेखनीय रूप से बुरा जवाब है। यह कुछ भी समझा नहीं है। इसके अलावा, "एक-ए" संबंध का यह मतलब नहीं है कि इसे एक ही कक्षा से प्राप्त करना है। इसी तरह, एक "ऑब्जेक्ट" का मतलब यह नहीं है कि इसे 'System.Object' कक्षा से प्राप्त करना है। यह किसी भी चीज़ से प्राप्त नहीं हो सकता है, फिर भी एक वस्तु हो सकती है।प्रश्न 'ऑब्जेक्ट' से प्राप्त 'ValueType' मूल रूप से * अर्थपूर्ण *, या प्रकार श्रेणी का प्रश्न है: मान-प्रकार बनाम संदर्भ-प्रकार। – Nawaz

+0

@ नवाज सच नहीं है। पॉइंटर्स ऑब्जेक्ट से नहीं निकलते हैं, इस प्रकार वे ऑब्जेक्ट्स नहीं होते हैं। – IllidanS4

+0

यह एक प्रसिद्ध सी # मिथक है कि मूल्य प्रकार आमतौर पर ढेर पर आवंटित होते हैं। – RBT

6

आप (संदर्भ के अनुसार, वे तकनीकी रूप से ValueType वर्ग, से जो बारी में वारिस सही है कि, जबकि वस्तु एक संदर्भ प्रकार है, मूल्य प्रकार, यह परोक्ष से विरासत के रूप में Value Types के लिए MSDN के संदर्भ में कहा गया हैं ऑब्जेक्ट से विरासत

सी # इस के लिए एक विशेष मामला बनाया गया है ताकि इस तरह के मूल्य प्रकार ऑब्जेक्ट के तरीकों (जैसे टोस्टिंग) और गुणों से लाभ उठा सकें। इसके अलावा, आप अन्य प्रकार के प्रकारों के समान मूल्य प्रकारों का इलाज कर सकते हैं - कुछ भी आपको रोक नहीं रहा Object रों की एक सरणी के अंदर एक int में प्लग लगाने से।

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

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