#c#
#c#
Вопрос:
У меня есть логический метод, которому я пытаюсь передать десятичное число, а затем на основе некоторых критериев для полученного десятичного числа возвращаю логическое значение. При передаче значения Account.Deposit
я получаю сообщение об ошибке:
Для учетной записи нестатического поля, метода или свойства требуется ссылка на объект.Депозит (десятичный) ‘
Это метод, обрабатывающий пользовательский ввод, а затем передающий значения в мой метод проверки / действия:
namespace BankApp
{
public class DepositLogic
{
public void DoDeposit()
{
Console.Write("Please enter the amount you would like to deposit:");
decimal DepositAmount;
DepositAmount = Convert.ToDecimal(Console.ReadLine());
bool response;
response = Convert.ToBoolean(Account.Deposit(DepositAmount));
}
}
}
Это логический метод, который предназначен для возврата true
/ false
значения в метод выше, а также для изменения переменной баланса на основе входных данных от DoDeposit
метода
namespace BankApp
{
public class Account
{
private Decimal _balance;
public bool Deposit(decimal amountToAdd)
{
if(amountToAdd > 0)
{
_balance = _balance amountToAdd;
return true;
}
return false;
}
}
}
Моя цель — заставить пользователя ввести сумму для «Депозита», эта сумма будет передана моему Account.Deposit
методу, переменная баланса будет обновлена. Затем возвращается логическое значение, чтобы предупредить пользователя, если действие было успешным / неудачным.
Редактировать:
Если я создам экземпляр своей учетной записи в другом классе, возможно ли получить к ней доступ? Вот где в данный момент создается экземпляр моей учетной записи.
namespace BankApp
{
public class Program
{
public static void Main()
{
Account account = new Account("Suriya's Account", 100000);
}
}
}
Комментарии:
1. Кстати, DepositAmount — это локальная переменная, вы должны использовать camelCase для ее имени
2. Заметил, спасибо. @spidyx
Ответ №1:
В настоящее время вы пытаетесь получить доступ к Deposit()
методу в static matter ( Account.Deposit()
) , чтобы это сработало, вы должны пометить Deposit()
метод как static
. Но поскольку вы обращаетесь к полю из Deposit()
метода ( _balance
), более вероятно, что вам не нужен статический подход.
В этом случае вам нужно сначала создать экземпляр вашего Account
класса, а затем вызвать Deposit()
метод для созданного экземпляра объекта следующим образом:
public void DoDeposit()
{
Console.Write("Please enter the amount you would like to deposit:");
decimal DepositAmount;
DepositAmount = Convert.ToDecimal(Console.ReadLine());
bool response;
var account = new Account(); // Instantiate object
response = Convert.ToBoolean(account.Deposit(DepositAmount)); // Use instantiated object
}
Если вы хотите продолжить чтение по static
теме в C #, взгляните на это.
Комментарии:
1. Спасибо за ваш ответ, это имеет смысл. Я отредактировал свой пост. Если я создам экземпляр класса account в отдельном классе для класса, в котором находится DoDeposit, можно ли к нему получить доступ? Спасибо
2. @Xander Нет, вам либо нужно создать экземпляр
Account
объекта в общем расположении, например, в глобальной переменной (я не рекомендую это!), Либо вы можете передатьAccount
экземпляр в качестве параметра в свой логический класс (либо в конструкторе логического класса, либо в качестве параметраDoDeposit()
метода).
Ответ №2:
Account
является классом. Для вызова метода необходимо создать экземпляр Deposit
:
Account account = new Account();
response = Convert.ToBoolean(account.Deposit(DepositAmount));