变量和属性的区别是什么?

10 浏览
0 Comments

变量和属性的区别是什么?

这个问题已经有了答案:

可能是复制:

C#中字段和属性有什么区别?

我想知道变量和属性之间的区别,有人能解释一下吗?

admin 更改状态以发布 2023年5月19日
0
0 Comments

在变量中存储的数据不能被验证,但是在属性中可以。

属性更像是一个方法,它有 getset 方法,你可以定义这些方法来处理数据。

此外,它们在数据绑定中也非常有用。

属性公开字段。字段应该(几乎总是)保持为私有状态,并通过 get 和 set 属性进行访问。属性提供一种抽象级别,允许你更改字段,而不影响使用你的类的东西外部访问字段的方式。


示例:

就像出生日期的情况一样。你需要验证年龄是否小于今天的日期:

在字段中这是有效的:

DateTime age = new DateTime(2012,12,1);//1 december 2012

但在属性中你可以验证它:

private DateTime _dob;
public DateTime dob
{
    get
    {
        if(_dob!= null) return _dob;
    }
    set
    {
        if(DateTime.Compare(value, DateTime.Today) <= 0)
        {
             _dob= value;
        }
        else
        {
               throw new System.InvalidOperationException("Date of Birth should be less then today's date");
        }
    }
}

0
0 Comments

一个属性实际上是一个带有get方法和set方法的特殊函数。get和set方法可以提供一些逻辑,例如字段不能通过验证。

您可以使用私有字段来支持属性,例如:

private int age;
public int Age
{
    get { return age; }
    set
    {
        if (value < 0)
             throw new ArgumentException("Must be > 0");
        age = value;
    }
}

您还可以仅实现get部分并计算结果:

private int a;
private int b;
public int Sum
{
    return a + b;
}

0