【问题标题】:Does "DefaultCharSetAttribute" apply to "StructLayoutAttribute.CharSet" too?“DefaultCharSetAttribute”是否也适用于“StructLayoutAttribute.CharSet”?
【发布时间】:2015-11-23 07:47:53
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: c# pinvoke marshalling dllimport structlayout


    【解决方案1】:

    试试吧:

    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
    

    是的。

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2016-06-30
      • 2014-10-13
      • 2012-10-13
      相关资源
      最近更新 更多