Несколько (надеюсь полезных) вещей:
void operatingCost(ref double afterFees)
{
afterFees = (donationBFees / 17);
}
Это означает, что вы передаете ссылку на afterFees
и, в методе, делаете вещи на afterFees
(в данном случае,присваивая его donationBFees / 17
) и ничего не возвращая.Однако эта строка:
afterFeesBox.Text = operatingCost(ref afterFees);
означает, что вы присваиваете Text
результату этого метода, который не работает, поскольку его тип возвращаемого значения равен void
.
Вы такженикогда не объявляйте afterFees
, кроме как в этом методе (который не работает).Я полагаю, вы получаете сообщение об ошибке «Имя ... не существует в текущем контексте».Вам нужно объявить эту переменную локально (и переименовать ее, чтобы она не конфликтовала):
double partAfterFees = 0;
operatingCost(ref partAfterFees);
Итак, вы можете сделать несколько вещей:
1) вернуть тип (вы в настоящее время используете double
но, как предлагается в комментариях, возможно, захотите использовать decimal
).Тогда вы можете удалить ref
, если хотите.Затем вы можете сделать что-то вроде:
double operatingCost(ref double afterFees)
{
afterFees = (donationBFees / 17);
return afterFees;
}
afterFeesBox.Text = operatingCost(ref partAfterFees).ToString();
Но это кажется странным, поэтому я могу просто сделать (учитывая то, что вы сказали):
double partAfterFees = 0;
operatingCost(ref partAfterFees);
afterFeesBox.Text = partAfterFees.ToString();
Обратите внимание, что есть "лучше«Решения, включающие рефакторинг и проверку правильности ввода и т. д. Но я думаю, что это отвечает на ваши вопросы.