为什么[Enum] .Parse有一个ignoreCase参数?

时间:2013-10-21 08:38:18

标签: c# .net vb.net .net-4.0 enums

由于VB.Net中的枚举不能包含重复的值,如下所示:

Enum Test
  A
  a
End Enum

那么为什么[Enum].Parse方法有一个StringCase参数?

[Enum].Parse(GetType(Enum), Value, Ignorecase)

http://msdn.microsoft.com/en-us/library/system.enum.parse.aspx

  

Parse(Type,String,Boolean)

对我来说真的有意义。

.NET Framework Classes的逻辑开发人员在该方法中写过ignorecase标志吗?

我认为[Enum].Parse逻辑应该是自动检查ignorecase值而不是将boolean参数传递给方法,因为枚举不能包含重复项......或者它可以包含?

1 个答案:

答案 0 :(得分:10)

枚举可以包含仅在大小写不同的值 - 您无法在VB中声明它们。这是完全有效的C#:

public enum Foo
{
    A, a;
}

此外,即使枚举不能包含仅在大小写上不同的值,这也不意味着您总是希望它区分大小写或总是希望它不区分大小写。你建议它应该始终不区分大小写,这对于你试图提供区分大小写的匹配的情况会很烦人。在IMO中,唯一一个不区分大小写的匹配项是非常好的主意。