在.NET System.TypeCode枚举中,值如下:

public enum TypeCode {
  ...
  Double=14,
  Decimal=15,
  DateTime=16,
  String=18,
  }


字符串等于18。为什么不等于17?逻辑在哪里?

最佳答案

您可以按任何顺序为枚举元素分配任何数字(在您的情况下为整数)。如果未明确分配值,则默认情况下,第一个值将为0。所有其他未明确分配的值将使先前元素的值加一:

public enum TypeCode
{
   Double = 42,
   Decimal, // 43
   DateTime = 0,
   String = 18
}


更新

为什么System.TypeCode缺少值17-因为曾经是TimeSpan类型,但是却是it was removed

10-05 21:31