2011-09-07 15 views
11

のSystem.TypeCodeに列挙System.TypeCodeが起こったことは定義されています。好奇心のうちは、どのような値が17

public enum TypeCode 
{ 
    Empty = 0, 
    Object = 1, 
    DBNull = 2, 
    Boolean = 3, 
    Char = 4, 
    SByte = 5, 
    Byte = 6, 
    Int16 = 7, 
    UInt16 = 8, 
    Int32 = 9, 
    UInt32 = 10, 
    Int64 = 11, 
    UInt64 = 12, 
    Single = 13, 
    Double = 14, 
    Decimal = 15, 
    DateTime = 16, 
    String = 18, 
} 

、値17ののTypeCodeに何が起こったのか?それは存在したことはありますか? TypeCode.Stringに17の値ではなく18の値があるのはなぜですか?

答えて

13

following blog postについて説明します。

これは良い質問です。私はこの ファイルの歴史を掘り下げて、何が起こったのか把握できたかどうかを確認していました。 2000年10月からTypeCode列挙型にこの "穴"がありました。 古いビットセットが見つかりません。しかし、私は IConvertibleのコメントが正しいことを確信しています - これはTimeSpanであった。 TimeSpanの場合、 が可能ですが、しばらく興味深いと思ったら、 は、多くの人が10進数 をTimeSpanに変換してから削除する必要があることを率直に理解しています。

これらの値を最初に追加した のいずれかを削除したときに列挙型を「修正」しなかった理由を尋ねるかもしれません。 に内部的に大きな変更がある場合は、削除または変更された公開サーフ エリアに依存する可能性のあるすべてのコード を再コンパイルする必要があります。これは、 がTypeCode.Stringを参照し、値が18から に変更されている可能性があるすべてを再構築することを意味します.DevDivで内部的にこのプロセスを実行しますが、 という高価な&が苦しいです。

関連する問題