Как мне получить доступ к переменной из класса, а затем использовать ее в другом классе для моего оператора if в С#?

Я полный новичок в С# и пытаюсь сделать проект, изучая класс. Но я застрял с этой проблемой. Я пытаюсь передать переменную из этого класса

class UserAccount
{
    decimal balance = 0;
    public void PrintBalance()
    {
        Console.WriteLine("\nYour balance is: {0}", balance);
    }
    
}

в другой класс и хочу использовать его в своем операторе if и, возможно, отредактировать переменную остаток средств

class UserInterface
{
    public UserInterface()
    {
        UserAccount userAccount = new UserAccount();

        Console.WriteLine("~~~Welcome to ATM Service~~~");
        Console.WriteLine("\nPlease select from the following:\n");
        Console.WriteLine("[1] Check Balance");
        Console.WriteLine("[2] Withdraw Cash");
        Console.WriteLine("[3] Deposit Cash");
        Console.WriteLine("[4] Quit ATM Service");
        Console.WriteLine("");
        int userChoice = Convert.ToInt32(Console.ReadLine());

        switch (userChoice)
        {
            case 1:
                userAccount.PrintBalance();
                break;
            case 2:
                Console.WriteLine("Enter amount you wish to withdraw.");
                int withdrawAmount = Convert.ToInt32(Console.ReadLine());
                if(withdrawAmount <= 0)
                {
                    Console.WriteLine("Amount must not be negative number or 0.");
                    break;
                }
                if(withdrawAmount < userAccount.balance)
                {

                }

Я застрял с userAccount.balance в операторе if. Любая помощь будет принята с благодарностью.

Сделайте balance общедоступным свойством, которое затем можно будет инициализировать. Кроме того, по соглашению свойства начинаются с заглавной буквы,

Peter Smith 09.04.2022 12:13

Кроме того, где вы устанавливаете фактические значения UserAccount для клиента?

Peter Smith 09.04.2022 12:14

Вы имеете в виду свойство get & set? я прав?

TxRx21 09.04.2022 12:17
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
3
35
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

По умолчанию в C# видимость для свойства класса, такого как ваш balance, установлена ​​на private. Вы должны сделать это public, чтобы получить к нему доступ из экземпляра класса.

public decimal Balance { get; set; } = 0;

Советы :

  1. 0 уже является значением по умолчанию для типа decimal в C#, поэтому вам не нужно его устанавливать.
  2. В C#, как правило, мы используем PascalCase для общедоступных свойств/методов.
  3. Геттер/сеттер ({ get; set; }) обычно лучше подходит для общедоступных свойств.

Спасибо большое. Я также хотел бы уточнить, потому что здесь также есть 1 ответ, что он не использовал {get; набор; }. В чем их отличия, если мы их не используем?

TxRx21 09.04.2022 12:19
Ответ принят как подходящий

Всякий раз, когда вы хотите получить доступ к участнику из-за пределов Class, вы должны использовать правильный модификатор доступа.

Проще говоря, вы должны использовать, как показано ниже:

public decimal balance = 0;

Хотя это правильно, другой подход заключается в использовании Property Members внутри класса:

public decimal Balance { get; set; }

Для получения дополнительной информации и лучшего понимания различных модификаторов доступа вы можете посетить следующую ссылку:

Модификаторы доступа (Руководство по программированию на C#)

Большое спасибо за ответ. Мне также любопытно, потому что 1 комментарий здесь говорит использовать {get; набор; }. Каковы их различия, если мы используем набор get и если мы не используем?

TxRx21 09.04.2022 12:20

использование свойств дает ряд преимуществ, но описать их все в одном комментарии невозможно. важным является то, что вы можете использовать установщики/получатели свойств для применения логики, которую простое общедоступное поле не может. Вы погуглите, я уверен, что есть много интересных тем, которые вы можете прочитать и изучить. Ваше здоровье.

Mohi 09.04.2022 12:24

Когда я впервые столкнулся с сеттерами/геттерами, я понятия не имел, где их использовать. Теперь я знаю и буду читать об этом. Большое спасибо за Ваши советы и разъяснения.

TxRx21 09.04.2022 12:27

Вы также можете прочитать эту тему stackoverflow.com/questions/295104/…

Mohi 09.04.2022 12:29

Если вы не укажете модификатор доступа, компилятор по умолчанию установит его как закрытый. Переменные класса всегда должны быть закрытыми. Вы можете использовать свойства или методы для доступа к ним.

private decimal balance;

по собственности

public decimal Balance
{
    return balance;
}

по методу

public decimal getBalance()
{
    return balance;
}

Другие вопросы по теме