这是 MRE:
FileAccessPermissions permissions = FileAccessPermissions.Read | FileAccessPermissions.Special;
Console.WriteLine(permissions.ToString("G"));
Console.WriteLine(permissions.ToString("F"));
Console.WriteLine(permissions.ToString("D"));
Console.WriteLine(permissions.ToString("X"));
[Flags]
enum FileAccessPermissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4,
Delete = 8,
Special = 16,
ReadWrite = Read | Write,
}
令我惊讶的是,我找不到一个格式说明符G
和F
产生不同输出的单一示例。我在这个例子中得到了这个:
Read, Special
Read, Special
17
00000011
如果我这样做:
FileAccessPermissions permissions = FileAccessPermissions.ReadWrite;
我会得到:
ReadWrite
ReadWrite
3
00000003
如果删除该
[Flags]
属性,则两个格式说明符将为您提供不同的值,例如(FileAccessPermissions)17
::输出:
来自文档:
文档中确实提到了这一点:
返回
7
,而返回
Monday, Saturday
。在您的情况下,两者是相同的,因为您的
enum
标记为FlagsAttribute
。但是对于G
-modifier,当枚举标记为 时,多个值的总和仅显示为字符串Flags
,否则它将显示为数字:对比