Как указать, что параметр для универсального списка вводит дополнительный метод в c#

Попробуйте этот код:

$(this).children()[0]
5
задан Grant 15 August 2009 в 01:10
поделиться

3 ответа

Вам нужно сделать его универсальным методом:

public static void Shuffle<T>(this List<T> source)
{
    Random rnd = new Random();

    for (int i = 0; i < source.Count; i++)
    {
        int index = rnd.Next(0, source.Count);
        T o = source[0];

        source.RemoveAt(0);
        source.Insert(index, o);
    }
}

Это позволит ему работать с любым List .

11
ответ дан 18 December 2019 в 09:08
поделиться

Вы просто делаете свой собственный метод универсальным:

public static void Shuffle<T>(this List<T> source)
4
ответ дан 18 December 2019 в 09:08
поделиться

Немного не по теме, но перетасовка Фишера-Йейтса будет иметь меньшую систематическую ошибку и лучшую производительность, чем ваш метод:

public static void ShuffleInPlace<T>(this IList<T> source)
{
    if (source == null) throw new ArgumentNullException("source");

    var rng = new Random();

    for (int i = 0; i < source.Count - 1; i++)
    {
        int j = rng.Next(i, source.Count);

        T temp = source[j];
        source[j] = source[i];
        source[i] = temp;
    }
}
3
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: