1

阅读完 Windows 8 应用程序认证要求后,我想知道他们为什么这么说:

• 必须将 FlagsAttribute 应用于 UInt32 枚举。

•不得将FlagsAttribute 应用于Int32 枚举。

背后的原因是什么?

目前可以在http://msdn.microsoft.com/en-us/library/windows/apps/hh694083.aspx找到认证要求

4

1 回答 1

1

在 WinRT 中使用枚举有两种情况:作为枚举值常量和作为位域值常量。枚举值形式表示为有符号整数(因为它是枚举的),位域形式表示为无符号整数(允许所有 32 位用于标志)。所有位域枚举都必须具有 FlagsAttribute。

验证逻辑中的此规则强制枚举的基础类型在给定 FlagsAttribute 的值的情况下是正确的。

这很重要,因为如果枚举的基础类型已签名,则某些语言投影将无法正确使用带有 FlagsAttribute 的枚举。

于 2012-09-12T01:59:32.600 回答