"DefaultCharSetAttribute" 也适用于 "StructLayoutAttribute.CharSet" 吗?
Does "DefaultCharSetAttribute" apply to "StructLayoutAttribute.CharSet" too?
C# 默认平台调用对方法参数和结构字段字符串使用 ANSI 编组。
System.Runtime.InteropServices 包含属性 "DefaultCharset" 以将其更改为 Unicode。
来自 MSDN:"Apply the DefaultCharSetAttribute attribute at the assembly level or module level to set the CharSet value for any call to DllImportAttribute that does not include a CharSet named argument specified by the user."
我的问题是:此属性是否也为 "StructLayoutAttribute.CharSet" 设置了默认值?
谢谢!
试试吧:
using System;
using System.Runtime.InteropServices;
[module: DefaultCharSet(CharSet.Unicode)]
class Program {
static void Main(string[] args) {
var sla = typeof(Foo).StructLayoutAttribute;
Console.WriteLine(sla.CharSet);
Console.ReadLine();
}
}
struct Foo { };
输出:
Unicode
是的。
C# 默认平台调用对方法参数和结构字段字符串使用 ANSI 编组。
System.Runtime.InteropServices 包含属性 "DefaultCharset" 以将其更改为 Unicode。
来自 MSDN:"Apply the DefaultCharSetAttribute attribute at the assembly level or module level to set the CharSet value for any call to DllImportAttribute that does not include a CharSet named argument specified by the user."
我的问题是:此属性是否也为 "StructLayoutAttribute.CharSet" 设置了默认值?
谢谢!
试试吧:
using System;
using System.Runtime.InteropServices;
[module: DefaultCharSet(CharSet.Unicode)]
class Program {
static void Main(string[] args) {
var sla = typeof(Foo).StructLayoutAttribute;
Console.WriteLine(sla.CharSet);
Console.ReadLine();
}
}
struct Foo { };
输出:
Unicode
是的。