我想基於字段值返回枚舉值。根據字段值顯示枚舉值
例如:
如果Free value field
的值是「15」,我想回到枚舉值「1」,因爲枚舉值1的標籤是:'10 -20' ,因爲15是10-20的範圍我想返回該值。
我想爲此創建顯示方法。
我想我可以用switch case
的場景來完成這個。
我該如何最好地設置它?
我想基於字段值返回枚舉值。根據字段值顯示枚舉值
例如:
如果Free value field
的值是「15」,我想回到枚舉值「1」,因爲枚舉值1的標籤是:'10 -20' ,因爲15是10-20的範圍我想返回該值。
我想爲此創建顯示方法。
我想我可以用switch case
的場景來完成這個。
我該如何最好地設置它?
當然,你可以用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;
}
是的,用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
}
我個人喜歡用整數除法得到聰明的想法。
如果你的範圍將是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));
}