Задать приватное поле в конструкторе, используя набор проверки из свойства - PullRequest
0 голосов
/ 14 ноября 2011

Итак. Как проверить личную переменную (поле) экземпляра со свойством внутри конструктора?

У меня есть этот код, который работает, но у меня сильное чувство, что это не так, как это должно быть сделано:

class Account
    {
        private decimal acctBalance = 0;

        public decimal AcctBalance
        {
            get
            {
                return acctBalance;
            }
            set
            {
                if (acctBalance >= 0)
                    acctBalance = value;
                else
                {
                    Console.WriteLine("Invalid balance, balance set to 0");
                    acctBalance = 0;
                }
            }
        }

        public Account(decimal balance)
        {
            acctBalance = balance;
            AcctBalance = acctBalance;
        }
    }

Я просто хочу убедиться, что это правильный способ сделать это

спасибо!

1 Ответ

3 голосов
/ 14 ноября 2011

Ваш подход в основном правильный, хотя есть несколько проблем. Я исправил их и прокомментировал код комментариями.

class Account
{
    private decimal acctBalance = 0;

    public decimal AcctBalance
    {
        get
        {
            return acctBalance;
        }
        set
        {
            //modified to check value instead of acctBalance
            if (value >= 0)
                acctBalance = value;
            else
            {
                Console.WriteLine("Invalid balance, balance set to 0");
                acctBalance = 0;
            }
        }
    }

    public Account(decimal balance)
    {
        //redundant! Changing AcctBalance changes acctBalance
        //acctBalance = balance;
        AcctBalance = balance; 
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...