Я полный новичок в С# и пытаюсь сделать проект, изучая класс. Но я застрял с этой проблемой. Я пытаюсь передать переменную из этого класса
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. Любая помощь будет принята с благодарностью.
Кроме того, где вы устанавливаете фактические значения UserAccount
для клиента?
Вы имеете в виду свойство get & set? я прав?
По умолчанию в C# видимость для свойства класса, такого как ваш balance
, установлена на private
. Вы должны сделать это public
, чтобы получить к нему доступ из экземпляра класса.
public decimal Balance { get; set; } = 0;
Советы :
decimal
в C#, поэтому вам не нужно его устанавливать.{ get; set; }
) обычно лучше подходит для общедоступных свойств.Спасибо большое. Я также хотел бы уточнить, потому что здесь также есть 1 ответ, что он не использовал {get; набор; }. В чем их отличия, если мы их не используем?
Всякий раз, когда вы хотите получить доступ к участнику из-за пределов Class
, вы должны использовать правильный модификатор доступа.
Проще говоря, вы должны использовать, как показано ниже:
public decimal balance = 0;
Хотя это правильно, другой подход заключается в использовании Property Members
внутри класса:
public decimal Balance { get; set; }
Для получения дополнительной информации и лучшего понимания различных модификаторов доступа вы можете посетить следующую ссылку:
Модификаторы доступа (Руководство по программированию на C#)
Большое спасибо за ответ. Мне также любопытно, потому что 1 комментарий здесь говорит использовать {get; набор; }. Каковы их различия, если мы используем набор get и если мы не используем?
использование свойств дает ряд преимуществ, но описать их все в одном комментарии невозможно. важным является то, что вы можете использовать установщики/получатели свойств для применения логики, которую простое общедоступное поле не может. Вы погуглите, я уверен, что есть много интересных тем, которые вы можете прочитать и изучить. Ваше здоровье.
Когда я впервые столкнулся с сеттерами/геттерами, я понятия не имел, где их использовать. Теперь я знаю и буду читать об этом. Большое спасибо за Ваши советы и разъяснения.
Вы также можете прочитать эту тему stackoverflow.com/questions/295104/…
Если вы не укажете модификатор доступа, компилятор по умолчанию установит его как закрытый. Переменные класса всегда должны быть закрытыми. Вы можете использовать свойства или методы для доступа к ним.
private decimal balance;
по собственности
public decimal Balance
{
return balance;
}
по методу
public decimal getBalance()
{
return balance;
}
Сделайте
balance
общедоступным свойством, которое затем можно будет инициализировать. Кроме того, по соглашению свойства начинаются с заглавной буквы,