为什么我们需要c#中自动实现属性的访问器?

时间:2017-05-10 10:47:58

标签: c#

我对自动实现的属性有些怀疑。为什么我们先得到,然后设置值?

1 个答案:

答案 0 :(得分:1)

您发布的内容不是自动财产。

下面是一个示例类,其中包含1个自动属性和类似于您所做的自定义属性。

public class MyPropertyClass
{
    public MyPropertyClass(bool affectLogic)
    {
        _affectLogic = affectLogic;
    }
    private readonly bool _affectLogic;

    public string MyAutoProperty { get; set; }

    private string _myPropertyWithLogic;
    public string MyPropertyWithLogic
    {
        get
        {
            if (_affectLogic)
                _myPropertyWithLogic = "Some value";

            return _myPropertyWithLogic;
        }
        set
        {
            if (_affectLogic)
            {
                _myPropertyWithLogic = "Some value";
            }
            else
            {
                _myPropertyWithLogic = value;
            }

        }
    }
}

autoproperty“MyAutoProperty”提供了一种简单获取和设置属性值的机制。

您在标准属性中发布的内容,允许您根据特定条件操纵或返回属性值。在您的帖子中,您要检查在设置之前发布的值是否为空。

如果您不需要访问该类之外的属性,则无需使用get方法。如果你删除了get,那么你正在创建一个“WriteOnly”属性,这是不好的做法。

在接受“Alert”值的类上创建一个公共方法。如果您不需要访问该课程以外的属性,则根本不要创建属性。

public void SetMyProperty(string value)
{
     _myPropertyWithLogic = value;
}