如何从c#中的数字范围获取元素的类型?

问题描述 投票:0回答:1

如何从一系列数字中获取输入数据的类型,并将其与c#中的Enum相结合?我想避免使用if / else,将其移动到某种范围,也许使用IsDefined?

    [Flags]
    public enum PaymentCodeTypes
    {
        Other = 1,
        Warranty = 2,
        Contract = 4
    }
         var PaymentCodeType = 0;
            if (paymentCode >= 80 && paymentCode <= 89)
            {
                PaymentCodeType = (int) PaymentCodeTypes.Contract;
            }
            else if (paymentCode >= 90 && paymentCode <= 99)
            {
                PaymentCodeType = (int) PaymentCodeTypes.Warranty;
            } else
            {
                PaymentCodeType = (int)PaymentCodeTypes.Other;
            }
c# .net enums
1个回答
0
投票

您可以使用C#8中添加的switch expression

switch

如果要使其更短,则牺牲了可维护性:

var PaymentCodeType = (int)(paymentCode switch {
    var x when x >= 80 && x <= 89 => PaymentCodeTypes.Contract,
    var x when x >= 90 && x <= 99 => PaymentCodeTypes.Warranty,
    _ => PaymentCodeTypes.Other
});
© www.soinside.com 2019 - 2024. All rights reserved.