2011-07-19 11 views
6

Iました↓お客様列挙型とシステム列挙型の間に違いはあります

1)顧客の列挙型(DAYOFWEEKからコピー)

[Serializable] 
public enum Tester 
{ 
    // 概要: 
    //  Indicates Sunday. 
    Sunday = 0, 
    // 
    // 概要: 
    //  Indicates Monday. 
    Monday = 1, 
    // 
    // 概要: 
    //  Indicates Tuesday. 
    Tuesday = 2, 
    // 
    // 概要: 
    //  Indicates Wednesday. 
    Wednesday = 3, 
    // 
    // 概要: 
    //  Indicates Thursday. 
    Thursday = 4, 
    // 
    // 概要: 
    //  Indicates Friday. 
    Friday = 5, 
    // 
    // 概要: 
    //  Indicates Saturday. 
    Saturday = 6, 
} 

2)2つのテストを作成を作成するには、以下のようなテスト方法...

static void TestEnumToString() 
    { 
     var t = Tester.Sunday; 
     Enumerable.Range(0, 1000000).ToList().ForEach(i => t.ToString()); 
    } 

    static void DayOfWeekEnumToString() 
    { 
     var t = DayOfWeek.Sunday; 
     Enumerable.Range(0, 1000000).ToList().ForEach(i => t.ToString()); 
    } 

3)Mainメソッド

static void Main() 
    { 
     Stopwatch sw = new Stopwatch(); 
     sw.Start(); 
     TestEnumToString(); 
     sw.Stop(); 
     Console.WriteLine("Tester:" + sw.ElapsedMilliseconds); 


     sw = new Stopwatch(); 
     sw.Start(); 
     DayOfWeekEnumToString(); 
     sw.Stop(); 
     Console.WriteLine("DayOfWeek:" + sw.ElapsedMilliseconds); 

     Console.ReadKey(); 
    } 

4)結果:システムタイプの列挙型は、顧客の列挙型よりも遅くなる理由

Tester : 3164ms 
DayOfWeek : 7032ms 

私は本当に知らない.... は、誰も私に理由を教えてもらえますか? は...

UPDATEのEDITをありがとう: がenumに[のComVisible(真)]を追加します。

[ComVisible(true)] 
[Serializable] 
public enum Tester 
{ 
    Sunday = 0, 


    Monday = 1, 


    Tuesday = 2, 


    Wednesday = 3, 


    Thursday = 4, 


    Friday = 5, 


    Saturday = 6, 
} 

結果:

Tester : 5018ms 
DayOfWeek : 7032ms 

システム列挙型顧客列挙型よりもまだ遅く...

+0

enum(Da​​yOfWeek)には特別なカルチャー処理があるかもしれません。 – leppie

答えて

1

Enumは、[ComVisible(true)]または[Flags]とテストの結果を変更するたびに飾ることができます。

[Serializable] 
//[Flags] 
[ComVisible(true)] 
public enum Tester 
{  
    // 概要: 
    //  Indicates Sunday. 
    Sunday = 0,  
1

あなたはリンゴにリンゴを比較したい場合は、[ComVisible(true)]属性を追加する必要があります。