Member 14637431 Ответов: 2

Локальный параметр или не может быть объявлен в этой области


я работаю над проектом и, кажется, не могу понять, почему я получаю эту ошибку. вот полный текст сообщения об ошибке
A local or parameter named 'waterAmount' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter 


а вот и код

public void WaterMethod()
	{
		int waterAmount;

		Console.WriteLine("In ounces, enter the amount of water that will be put in.");
		waterAmount = int.Parse(Console.ReadLine());

		if (waterAmount => 42)
		{

		}
	}

Заранее спасибо за любую помощь

Что я уже пробовал:

поиск вопросов об этой ошибке на таких сайтах, как этот

2 Ответов

Рейтинг:
2

Jon McKee

"=>" определяет лямбда-выражение. Вам нужно ">=", которое является оператором сравнения (больше или равно). Создавая лямбду, вы переопределяете waterAmount.

РЕДАКТИРОВАТЬ:
Для более детального объяснения того, что происходит, лямбда может захватывать переменные, заключающие в себе область видимости. Одним из побочных эффектов этого является то, что символы (например, waterAmount) не могут быть продублированы между областью действия лямбды и охватывающей областью действия. Например, как бы вы разрешили следующее:

int waterAmount;
Func<int, int> lambda = waterAmount => waterAmount * waterAmount;

На какую водяную гору ссылается код лямбды? Параметр дважды, локальный дважды или смесь?

Это также относится к локальным/вложенным функциям (функциям, определенным в функциях).

Для большего: Красота закрытия[^]


Patrice T

Я этого не вижу :) +5

Richard Deeming

Хорошее место! В этом случае второе сообщение об ошибке немного более полезно, чем первое:

CS1660 Cannot convert lambda expression to type 'bool' because it is not a delegate type

Jon McKee

Ха-ха, конечно. Это гораздо более полезное сообщение об ошибке 👍

Рейтинг:
2

Patrice T

Цитата:
Локальный параметр или параметр с именем 'waterAmount' не может быть объявлен в этой области, поскольку это имя используется в заключительной локальной области

Невозможно ответить на этот вопрос, поскольку вы удалили оскорбительную часть своего кода.
Обновите свой вопрос с помощью завершенного кода.