"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

是的。