什么是C#中的ansi课程?

bil*_*bob 5 c# reflection reflection.emit

我开始在我的项目中使用反射.

当我创建一个类型并且我想指定TypeAttributes时,我有两个选项: AnsiClassClass.它们在枚举中都设置为0 TypeAttributes.

public enum TypeAttributes
{
    //     LPTSTR is interpreted as ANSI.
    AnsiClass = 0,
    //
    // Summary:
    //     Specifies that the type is a class.
    Class = 0,
...
Run Code Online (Sandbox Code Playgroud)

1-什么是ANSI Class(我注意到了,它与之相关LPTSTR,但我不太了解)?

2- 我使用时AnsiClassa和a 之间的区别是什么.ClassReflection

编辑

这是在Reflection中指定TypeAttributes的示例:

TypeBuilder typeBuilder = mbuilder.DefineType("DataRow", TypeAttributes.Public | TypeAttributes.AnsiClass | TypeAttributes.Class);
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 3

我有两个选择:AnsiClass 和 Class

不,那些是正交的。 AnsiClass告诉编组器所有字符串属性都将编组为 ANSI 字符串。该类别中的其他选项是:

UnicodeClass
AutoClass
CustomFormatClass
Run Code Online (Sandbox Code Playgroud)

Class表明他们输入的是 a class。该组中唯一的其他选项是Interface. 有趣的是,当你查看框架类型的属性时,类、结构体和接口都有该Class属性,所以我不确定它的用途。

 typeof(object).Attributes.Dump();   
 typeof(int).Attributes.Dump();   
 typeof(ICloneable).Attributes.Dump();  
Run Code Online (Sandbox Code Playgroud)

输出:

AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit
AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, Serializable, BeforeFieldInit
AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract
Run Code Online (Sandbox Code Playgroud)