Выберите случайные объекты из массива в C#
В этом примере создается общий метод расширения, который позволяет легко выбирать случайные объекты из массива. Следующий код показывает метод расширения и класс RandomTools, который определяет его.
public static class RandomTools { // Случайный объект, используемый этим методом. private static Random Rand = null; // Возвращает случайное значение. public static T PickRandom(this T[] values) { // Создаем объект Random, если он не существует. if (Rand == null) Rand = new Random(); // Выберите элемент и вернем его. return values[Rand.Next(0, values.Length)]; } }
Класс сначала определяет приватную переменную типа Random. Он использует этот объект для генерации случайных чисел, когда он им нужен.
Далее класс определяет метод расширения PickRandom. & lt; T & gt; после имени метода указывает, что это общий метод, который принимает один общий параметр, который в этом методе называется T.
Ключевое слово this указывает, что это метод расширения, который расширяет переменную, которая следует за ним. В этом случае он расширяет массив типа T.
Сначала метод проверяет переменную Rand и инициализирует ее, если она null. Затем код использует Rand.Next для генерации случайного числа в пределах массива values. Он заканчивается, возвращая соответствующее значение из массива.
Этот код не длинный, но он немного запутан, потому что он использует как методы расширения, так и дженерики. Однако после того, как вы определили его, он очень прост в использовании. Следующий код показывает, как программа использует метод PickRandom для выбора случайной строки из txtLines TextBox.
txtResult.Text = txtNames.Lines.PickRandom();