使用来自属性的设置验证在构造函数中设置私有字段

本文关键字:设置 构造函数 字段 验证 属性 | 更新日期: 2023-09-27 18:14:34

所以。。如何使用构造函数内部的属性验证私有实例变量(字段(?

我有这个代码可以工作,但我有一种强烈的感觉,这不是应该做的:

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;
        }
    }

我只想确保这是正确的方法

谢谢!

使用来自属性的设置验证在构造函数中设置私有字段

尽管存在一些问题,但您的方法基本上是正确的。我修复了它们,并在代码中添加了注释。

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; 
    }
}