2015-03-11 8 views
5

मैंने अपनी परियोजना में प्रतिबिंब का उपयोग शुरू किया।सी # में एक ansi कक्षा क्या है?

जब मैं एक प्रकार बनाता हूं और मैं टाइप एट्रिब्यूट्स निर्दिष्ट करना चाहता हूं, तो मेरे पास दो विकल्प हैं: AnsiClass और Class। वे दोनों enum TypeAttributes में 0 पर सेट हैं।

public enum TypeAttributes 
{ 
    //  LPTSTR is interpreted as ANSI. 
    AnsiClass = 0, 
    // 
    // Summary: 
    //  Specifies that the type is a class. 
    Class = 0, 
... 

1- क्या एक ANSI Class (मैंने देखा है कि, यह LPTSTR से संबंधित है, लेकिन मैं काफी अच्छी तरह से समझा नहीं गया था) है?

2- और Class के बीच अंतर क्या है जब मैं Reflection का उपयोग करता हूं।

संपादित

यहाँ प्रतिबिंब में TypeAttributes निर्दिष्ट करने का एक उदाहरण है:

TypeBuilder typeBuilder = mbuilder.DefineType("DataRow", TypeAttributes.Public | TypeAttributes.AnsiClass | TypeAttributes.Class); 
+1

आप कुछ प्रासंगिक कोड दिखा सकते हैं? एमएसडीएन शायद लिंक? यह [लगता है] (http://referencesource.microsoft.com/#mscorlib/system/reflection/typeattributes.cs,ada9a877a9d95037,references) हालांकि इंटरऑप के दौरान स्ट्रिंग मार्शलिंग के साथ करना है। – CodeCaster

+0

जब भी आपके पास ऐसे प्रश्न हों, तो एमएसडीएन दस्तावेज एक महान संसाधन है। एमएसडीएन पर 'टाइप एट्रिब्यूट्स': https://msdn.microsoft.com/en-us/library/system.reflection.typeattributes%28v=vs.110%29.aspx – cubrr

+0

संबंधित प्रलेखन: https://msdn.microsoft.com /en-us/library/system.reflection.typeattributes(v=vs.110).aspx टिप्पणियां इंगित करती हैं कि ansi भाग स्ट्रिंग प्रारूप (एन्कोडिंग) के संबंध में है। – sisve

उत्तर

3

मैं दो विकल्प हैं: AnsiClass और कक्षा

नहीं है, उन ओर्थोगोनल हैं। AnsiClass मार्शलर को बताता है कि सभी स्ट्रिंग गुणों को एएनएसआई तारों के रूप में चिह्नित किया जाना है। उस श्रेणी के अन्य विकल्प हैं:

UnicodeClass 
AutoClass 
CustomFormatClass 

Class इंगित करता है कि वे टाइप वह यह है कि अच्छी तरह से, एक class। उस समूह में एकमात्र अन्य विकल्प Interface है। दिलचस्प बात यह है कि जब आप ढांचे प्रकार, वर्ग, structs, और इंटरफेस सभी की विशेषताओं को देखो Class विशेषता है, तो मुझे यकीन है कि क्या इसके लिए प्रयोग किया जाता है नहीं कर रहा हूँ।

typeof(object).Attributes.Dump(); 
typeof(int).Attributes.Dump(); 
typeof(ICloneable).Attributes.Dump(); 

उत्पादन:

AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit 
AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, Serializable, BeforeFieldInit 
AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract 
0
अच्छी तरह से

यदि आप MSDN पर देखने के है का कहना है

https://msdn.microsoft.com/en-us/library/system.type.isansiclass%28v=vs.110%29.aspx

संपत्ति मूल्य

टाइप: सिस्टम.बोलियन

सत्य अगर स्ट्रिंग प्रारूप विशेषता AnsiClass प्रकार के लिए चुना गया है; अन्यथा, झूठी।

इम्प्लीमेन्ट्स _Type.IsAnsiClass

जो बल्कि उपयोगी तुलना में कम है, लेकिन यदि आप TypeAttributes गणन के StringFormatMask पर नज़र डालें तो यह बहुत मूल रूप से {AnsiClass,UnicodeClass,AutoClass,CustomFormatClass}

के संभावित मान हैं देखेंगे यह संकलक कैसे एएनएसआई या यूनिकोड, जो जहाँ तक मुझे पता है कर रहा हूँ सी # और vb पर कोई प्रभाव नहीं है, लेकिन अपने C++ वर्गों का उपयोग करता है, तो मुद्दों के सभी प्रकार के लिए नेतृत्व कर सकते के रूप में वर्ग के भीतर तार व्याख्या करने के लिए सूचित

देख http://www.codeproject.com/Articles/2995/The-Complete-Guide-to-C-Strings-Part-I-Win-Chara

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