1

C# 默认平台调用对方法参数和结构字段字符串都使用 ANSI 编组。

System.Runtime.InteropServices 包含一个属性“DefaultCharset”以将其更改为 Unicode。

来自 MSDN:“在程序集级别或模块级别应用 DefaultCharSetAttribute 属性,以设置对不包括用户指定的 CharSet 命名参数的任何 DllImportAttribute 调用的 CharSet 值。”

我的问题是:这个属性是否也为“StructLayoutAttribute.CharSet”设置了默认值?

谢谢!

4

1 回答 1

2

去尝试一下:

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

所以是的。

于 2015-08-28T15:45:01.333 回答