2010-07-28 6 views
8

मैंने देखा कई स्थानों पर देखते हैं कि हम कुछ इस तरह है:संरचना के लिए केवल स्ट्रक्चरआउट?

StructLayout साथ
[StructLayout(LayoutKind.Sequential, Pack = 1)] 
    public class E2H_LANEFIND_DATA_T 
    { 
.... 
} 

वर्ग परिभाषा। क्या यह ठीक है या StructLayout केवल struct के लिए है?

उत्तर

14

The documentation स्पष्ट रूप से कहा गया है:

आप कक्षाएं या संरचनाओं को यह विशेषता आवेदन कर सकते हैं।

आमतौर पर, सामान्य भाषा रनटाइम प्रबंधित स्मृति में कक्षा या संरचना के डेटा फ़ील्ड के भौतिक लेआउट को नियंत्रित करता है। हालांकि, यदि आप किसी निश्चित तरीके से कक्षा या संरचना की ज़रूरतों को व्यवस्थित करना चाहते हैं, तो आप StructLayoutAttribute का उपयोग कर सकते हैं। क्लास लेआउट का स्पष्ट नियंत्रण महत्वपूर्ण है यदि क्लास को अप्रबंधित कोड पर पास किया जाना है जो विशिष्ट लेआउट की अपेक्षा करता है।

जोर मेरा था।

इस स्थिति में मुख्य विचार यह है कि क्या आप अपने उदाहरणों को मूल्य या संदर्भ द्वारा पारित करना चाहते हैं, इस मामले में आप क्रमशः संरचना या कक्षा का उपयोग करेंगे।

2

नहीं, यह कक्षाओं के लिए मान्य है। MSDN से: You can apply this attribute to classes or structures.

StructLayoutAttribute

-6

हां, आप इस विशेषता को कक्षा में लागू कर सकते हैं, लेकिन यह काम नहीं करेगा। यह केवल संरचना के लिए काम करता है।

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