如果是随机数C#.net,则替代else

gam*_*nts 3 c# random if-statement

是否有一种较短的方法来检查我的随机数从1 - 100(catNum)对这个动物表?这个看起来并不那么糟糕,但是我还有几个更大的表可以使用,我想使用的线路比使用下面的语句少:

if (catNum < 36) { category = "Urban"; }
        else if (catNum < 51) { category = "Rural"; }
        else if (catNum < 76) { category = "Wild"; }
        else if (catNum < 86) { category = "Wild Birds"; }
        else { category = "Zoo"; }
Run Code Online (Sandbox Code Playgroud)

进一步表的​​示例:

较大表的示例

小智 5

我喜欢使用类似这样的东西,而不是很多if/else A类

class Category
{
    public int Min { get; set; }
    public int Max { get; set; }
    public string Name { get; set; }
}  
Run Code Online (Sandbox Code Playgroud)

初始化类别一次,并用您的值填充它

var categories = new List<Category>();
Run Code Online (Sandbox Code Playgroud)

最后一种解决类别的方法

public static string Get(int currentValue)
{
    var last = categories.Last(m => m.Min < currentValue);
    //if the list is ordered 
    //or
    // var last = categories.FirstOrDefault(m => m.Min <= currentValue && m.Max >= currentValue);
    return last?.Name;
}
Run Code Online (Sandbox Code Playgroud)