Хорошо, ваша основная проблема c в том, что переменная input
, на которую вы sh ссылаетесь в MultyMethod
, является внутренней для SumMethod
. Следовательно, MultyMethod
не может получить к нему доступ.
Вы определяете другую переменную с именем input
в MultyMethod
, но это НЕ та же переменная. Это отдельная область, область действия которой равна MultyMethod
, и к ней нельзя получить доступ за ее пределами.
Итак, как делать то, что вы хотите. Надеюсь, вы не возражаете, что я также внесу несколько предложений о том, как лучше организовать этот код.
Во-первых, вы можете определить input
вне SumMethod
как класс- уровень статистики c переменная. В этом случае к нему могут получить доступ как SumMethod
, так и MultyMethod
. Ниже приводится краткая выдержка (некоторые строки удалены для экономии места):
class Program
{
public int number1 { set; get; }
public int number2 { set; get; }
public int sum { set; get; }
public int multy { set; get; }
public static Program input = null;
static void Main(string[] args)
{
// etc.
}
public static Program SumMethod()
{
input = new Program();
// rest of the code
return input;
}
public static Program MultyMethod()
{
input = Program.input; // this is a static reference.
// desired multiplication code
return input;
}
Другой вариант - параметризовать MultyMethod
, чтобы он принимал Program
в качестве параметра, представляющего ввод:
public static Program MultyMethod(Program input)
{
// You probably don't want to have the same variable have both your sum
// and your multiplication results.
Program newVar = new Program() { number1 = input.number1, number2 = input.number2 };
// Do things with newVar in place of "input"
return newVar;
}
Тогда вы бы изменили Main
, чтобы он выглядел так:
var value = SumMethod();
var values = MultyMethod(value);
Еще лучшая версия будет отделять получение ввода от выполнения суммирования. Итак, вы можете сделать это:
static void Main(string[] args)
{
var input = GetInput();
var value = SumMethod(input);
var values = MultyMethod(input);
// do other things
}
Наконец, все было бы лучше, если бы у вас были отдельные классы для всех трех из следующих:
- Сама программа
- Входные параметры и результаты
- Методы умножения и суммирования