Random.NextDouble и Random.Next не работают

99
02 октября 2021, 19:00
public int RandomNumber(int min, int max)
{
    Random random = new Random();
    return random.Next(min, max);
}

Тут ошибку пишет: Ошибка CS1061 "Random" не содержит определения "Next", и не удалось найти доступный метод расширения "Next", принимающий тип "Random" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

public string RandomString(int size, bool lowerCase)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random();
    char ch;
    for (int i = 0; i < size; i++)
    {
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
            builder.Append(ch);
        }
        if (lowerCase)
            return builder.ToString().ToLower();
        return builder.ToString();
    }

Тут пишет ошибку: Ошибка CS1061 "Random" не содержит определения "NextDouble", и не удалось найти доступный метод расширения "NextDouble", принимающий тип "Random" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Помогите. Заранее спасибо

Answer 1

Когда вам пишут, что в указанном классе нет того или иного метода/свойства, то тут скорей всего у вас есть нечто (класс), которое имеет аналогичное имя.

Например:

class Random {}
Random random = new Random();

Здесь идет обращение к созданному нами классу, не к системному, и у него естественно нет методов по типу .Next().

Как определить, тот ли класс мы используем?
Ну я знаю как минимум два способа:

  1. Просто навести на левую часть (до равно) в инициализации класса и студия сама выдаст нам все необходимое:

  1. Вы можете получить это название программным путем, написав просто var type = random.GetType(); и дальше просто посмотрите на полученный результат, там будет тоже, что мы увидели и в первом варианте (System.Random).

Для того, что бы нам это все исправить и использовать нужное, в C# есть namespace, с помощью которых мы можем использовать нужный нам класс, даже если названия у них одинаковые:

class Random {}
System.Random random = new System.Random();

Либо мы можем задать нужный нам namespace в using (именем может быть что угодно):

using Random = System.Random;

Вот собственно и все. Следите внимательно за тем, что вы используете!

Answer 2

Посмотрите внимательней, от куда вы получаете класс new Random(). Скорей всего у вас есть другой класс с подобным названием, который вы и пытаетесь использовать. Напишите например random.GetType(); и посмотрите какой будет результат, нужный вам класс должен выдать System.Random. – EvgeniyZ 34 минуты назад

Ответ в скопировал из комментов.

READ ALSO
Перенос данных(переменных) из C# в HTML

Перенос данных(переменных) из C# в HTML

Есть шаблон отчета на языке HTML и создана программа для расчетов на языке C#Нужно что бы значения из программы перетащить в шаблон HTML не знаю...

86
GUILayout.Button , как сделать активной-неактивной в EditorWindow?

GUILayout.Button , как сделать активной-неактивной в EditorWindow?

Есть кнопка GUILayoutButton("Обработать json, разместив объекты на карте") в окне EditorWindow

167
Как добавить закладки в pdf

Как добавить закладки в pdf

Есть интересная библиотека HiqPdf для конвертирования HTML в PDFЕсть несколько html файлов и я без проблем могу сконвертировать их в один общий PDF

94
Вывод массива foreach php

Вывод массива foreach php

есть такой код

215