2011-04-14 36 views
7

मैं IntPtr पर पढ़ रहा हूं और पढ़ा है कि इसका उपयोग हैंडल (ओं) का प्रतिनिधित्व करने के लिए किया जाता है। इसका वास्तव में क्या मतलब है? मुझे यकीन है कि यह एक साधारण स्पष्टीकरण है, लेकिन प्रकाश बल्ब इस समय चालू नहीं हो रहा है ..के लिए हैंडल क्या हैं? IntPtr

+0

डुप्लिकेट प्रश्न: http://stackoverflow.com/questions/1148177/just-what-is-an-intptr-exactly – HABJAN

+0

@Habjan: बिल्कुल नहीं। ओपी हैंडल के बारे में पूछ रहा है, जबकि वह सवाल 'इंटिप्टर' के बारे में पूछ रहा है। – Mehrdad

+0

संभावित संरचना का [डुप्लिकेट जो एक हैंडल इंगित करता है।] (Http://stackoverflow.com/questions/5343660/struct-which-a-handle-points-to) – Gabe

उत्तर

6

यह आम तौर पर एक ऑपरेटिंग सिस्टम हैंडल का जिक्र है, और आंतरिक रूप से उपयोग किया जाता है। उदाहरण के लिए, नियंत्रण के मूल विंडो हैंडल (एचडब्ल्यूएनडी) को संदर्भित करने के लिए विंडोज फॉर्म IntPtr का उपयोग करता है।

विंडोज एपीआई में हैंडल कई चीजों के लिए उपयोग किया जाता है - अधिकांश ऑपरेटिंग सिस्टम से संबंधित संसाधन (फाइलें, सॉकेट, विंडोज़ इत्यादि) सभी को एक हैंडल के माध्यम से उजागर किया जाता है, जो प्रभावी रूप से एक सूचक होता है। प्रबंधित कोड में, यह IntPtr में संग्रहीत हो जाता है।

कहा जा रहा है कि IntPtr नियमित रूप से इंटरऑप परिदृश्यों में पॉइंटर्स को स्टोर करने के लिए भी उपयोग किया जाता है, क्योंकि यह स्वचालित रूप से 32 बिट या 64 बिट कोड के आधार पर आकार बदलता है।

+0

+! एचडब्ल्यूएनडी के उपयोग के लिए जो अक्सर विंडोज एपीआई विधियों में उपयोग किया जाता है। यह ईमानदारी से वास्तव में एक अच्छा जवाब है। –

6

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