[flags]
enum Test
{
a=0,
b=1,
c=2
}
...
var v = Test.c | Test.b;
var str = v.ToString();
// str = 'b, c'
Run Code Online (Sandbox Code Playgroud)
是'str'中定义的值的顺序.b,c和c,b在语义上都是相同的,在语法上是不同的.为什么我关心 - 我正在编写测试代码(不在c#中)更喜欢不需要花哨的逻辑解析所有可能的组合
如果应用的FlagsAttribute和有一个或多个命名常数等于该实例的值的组合,则返回值是包含常数的名字的分隔符分隔的列表的字符串.
它没有指定它们将以何种顺序显示.
这的确格式的代码(见函数InternalFlagsFormat的参考源,在这里:http://referencesource.microsoft.com/#mscorlib/system/enum.cs)似乎总是相同的方式工作.
但是,由于订单没有记录,您必须自己判断改变的可能性.由于假设事情不会发生变化而在过去被烧毁,我会真正警惕取决于未明确记录的任何事情.
OP编辑:代码中有一个有趣的注释,用于格式化输出
// These values are sorted by value. Don't change this
String[] names;
ulong[] values;
Run Code Online (Sandbox Code Playgroud)
这表明枚举名称将按照枚举值的顺序出现.虽然正如你所说 - 从版本到版本都没有保证
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |