2016-09-27 147 views
2

我想基於字段值返回枚舉值。根據字段值顯示枚舉值

例如:

如果Free value field的值是「15」,我想回到枚舉值「1」,因爲枚舉值1的標籤是:'10 -20' ,因爲15是10-20的範圍我想返回該值。

我想爲此創建顯示方法。

我想我可以用switch case的場景來完成這個。
我該如何最好地設置它?

回答

3

當然,你可以用switch/case做到這一點,但如果你對付一個範圍值和一組有限的結果值(你的枚舉元素)然後進行簡單if/else if可能是更適合

所以不是說明你的情況,分公司每一個可能的值(1,2,3,4 BLA BLA)做這樣的事情

int x; 
; 

x = yourTable.YourField; 
if (x >= 1 && x <= 15) 
{ 
    return YourEnum::1to15; 
} 
else if (x >= 16 && x <= 20) 
{ 
    return YourEnum::16to20; 
} 
// other possible ranges 
else 
{ 
    throw YourEnum::Unknown; 
} 
1

是的,用switch聲明你可以做到這一點。

試試這個:

int value; 

; 

switch (value) 
{  
    case 1, 2, 3, 4 ,5: 
     //Your code 
     break; 

    case 10, 11, 12, 13, 14, 15, 16, 17, 18 ,19, 20 : 
     //Your code 
     break;      

    default :    
     //Your code 
} 
1

我個人喜歡用整數除法得到聰明的想法。

如果你的範圍將是10的組,那麼你可以用10除以得到枚舉值。

所以看到這個代碼和下面的截圖:

static void Job1(Args _args) 
{ 
    int   i; 
    MyEnum  value; 

    // Test #1 
    i  = 15;   // Your number 
    value = (i/10);  // Enum result 
    info(strFmt("Test #1: %1", value)); 

    // Test #2 
    i  = 5;   // Your number 
    value = (i/10);  // Enum result 
    info(strFmt("Test #2: %1", value)); 

    // Test #3 
    i  = 22;   // Your number 
    value = (i/10);  // Enum result 
    info(strFmt("Test #3: %1", value)); 
} 

enter image description here