Передача данных логическому методу в другом классе и обработка ответа

#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));