避免硬编码所有可能性

时间:2017-08-29 03:03:17

标签: c# xamarin

我制作的Xamarin应用程序的滑块介于1-100之间。我希望它是这样的,当滑块处于一定数量时,输出将执行此操作valueLabel.Text = output; I.e。它将显示输出变量的内容。

output = p1 + p11 + p2

Random r = new Random();
int countLower = r.Next(lower.Count);//I have a list called lower, im getting random values from it
int countLower1 = r.Next(lower.Count);

var p1 = lower[countLower];
var p11 = lower[countLower1];

例如,如果滑块(var cat)的值为5,我希望输出有5个东西(countLower + countLower1 + countLower2 + countLower3 + countLower4)但我不知道如何自动创建这个代码基于滑块号。我不想硬编码每种可能性,有什么办法吗?

我正在获取滑块值:

public void Slider_ValueChanged(object sender, ValueChangedEventArgs e)
{
    var newStep = Math.Round(e.NewValue/step);
    var cat =newStep.ToString(); 
    label.Text = cat;
}

2 个答案:

答案 0 :(得分:1)

试试这个:

int output = Enumerable.Range(0, newStep).Select(x => lower[r.Next(lower.Count)]).Sum();

答案 1 :(得分:0)

这还没有经过测试,但我们的想法是,对于滑块上的每个移动,您生成了N个随机数,直到滑块值,然后使用String.Join()将它们全部组合在一起。

public void Slider_ValueChanged(object sender, ValueChangedEventArgs e)
{
    var things = new List<int>();
    var newStep = Math.Round(e.NewValue/step);
    Random r = new Random();

    for (var i = 0; i < newStep; i++) {
         things.Add(r.Next(i);     
    }

    var cat = string.Join(",", things); 
    label.Text = cat;
}