Я изучаю C#. (6 часов). Мне больше нравится Ruby и Javascript, и я нахожу C# забавой, но все же более тусклым в том, что он позволит вам сделать, поэтому я заново открываю простые функции. Я пытаюсь построить простой калькулятор, чтобы перейти на C#, чтобы делать что-то, и я постоянно сталкиваюсь с проблемами области.Проблема, связанная с целыми числами внутри функции, которая будет передана позже - проблема с областью - я думаю
Вот код. Функция NumSelect разбивает ее. Я хочу, чтобы пользователь мог ввести 2 номера в консоли, а затем они будут добавлены. Как только это будет выполнено, я создам другие математические операции и добавлю логику, чтобы пользователь выбрал операцию, которую они хотели бы сделать, а затем спросить их о своих входах и затем выполнить расчет.
Ошибка
calculator.cs(18,9): error CS0103: The name `number1' does not exist in the current context
и удар его на самом экземпляре number1 и number2 за пределами функции NumSelector. Таким образом, это похоже на проблему с областью, но я не могу понять правильный подход для назначения этих переменных в функции, поэтому мне нужно сделать это только один раз.
using System;
class SimpleMath
{
public int Add(int number1, int number2)
{
int result = number1 + number2;
return result;
}
public int Subtract(int number1, int number2)
{
int result = number1 - number2;
return result;
}
//this function will assign the inputs to variables
public int NumSelect()
{
number1 = Console.ReadLine;
number2 = Console.ReadLine;
}
static void Main()
{
SimpleMath operation = new SimpleMath();
Console.WriteLine("Give me two numbers and I will add them");
operation.NumSelect();
int result = operation.Add(number1, number2);
Console.WriteLine("{0} + {1} = {2}", number1, number2, result);
}
}
Какой смысл брать строку в виде строки? Почему бы просто не сделать int input = Console.ReadLine(); обратный вход; Я бы предположил, что вы разбираете строку, чтобы обрабатывать неудовлетворительный вход пользователей, который не является целым числом? Спасибо! – nwimmer123
@ nwimmer123: Вы попробовали? Что такое объявленный тип возврата 'Console.ReadLine()'? Есть ли неявное преобразование из этого в 'int'? –
Интересно. По-видимому, все ReadLines являются строками. Таким образом, вы не можете сохранить его как целочисленную назначаемую переменную и должны изменить свой тип данных, чтобы сделать это. Псих. Жесткость C# требует некоторого привыкания после ослабления Ruby. – nwimmer123