扩展方法不填充数组

时间:2021-01-23 19:57:27

标签: c# .net

我想填充随机数数组,但我想用扩展方法来做到这一点,结果我只有 500 个零。

    public static IEnumerable<int> FillRandom(this IEnumerable<int> arr, int min, int max)
    {
        Random rndNum = new Random();

        foreach (var item in arr)
        {
            yield return rndNum.Next(min, max);
        }
    }


        int[] UndefinedNumbers = new int[500];
        UndefinedNumbers.FillRandom(1, 100); //Executing extension method.

Output

2 个答案:

答案 0 :(得分:0)

你应该这样做:

public static void FillRandom(this List<int> arr,int count, int min, int max)
{
    Random rndNum = new Random();
    
    arr.Clear();
    foreach (int i = 0; i < count; count++)
    {
        arr.Add(rndNum.Next(min, max));
    }
}

List<int> temp = new List<int>();
temp.FillRandom(10, 0, 20);

答案 1 :(得分:0)

您的扩展方法没有填充给定的数组,而是返回新的可枚举。

var undefinedNumbers = new int[500];
var randomNumbers = undefinedNumbers.FillRandom(1, 100);

object.ReferenceEquals(undefinedNumbers, randomNumbers); // returns false

要填充给定数组,将参数类型更改为

public static int[] FillRandom(this int[] array, int min, int max)
{
    Random rndNum = new Random();

    for(var i = 0; i < array.Length; i++)
    {
        array[i] = rndNum.Next(min, max);
    }
}

用法

int[] randomNumbers = new int[500].FillRandom(1, 100);
相关问题