在C#中编写自己的set并获取函数是不是很糟糕?

时间:2015-07-01 12:05:16

标签: c#

每当我告诉Visual Studio创建getterssetters时,它会生成以下代码:

    private string name;
    public string Name
    {
        get { return name; }
        set { test = value; }
    }

这段代码对我来说并不容易理解。对我来说,更容易合作的是:

    public string GetName()
    {
        return name;
    }

    public void SetName(string _name)
    {
        name = _name;
    }

我想知道为get / set编写自己的函数是不好的做法。

2 个答案:

答案 0 :(得分:10)

是。因为现在你的代码很难被其他人理解。

.NET约定是使用属性。使用第一段代码,我可以执行someObject.Name = "hello";string name = someObject.Name;,即使查找Name的文档,我也很清楚这意味着什么。

有了你的,我必须学习更多关于你的奇怪课程,以学习如何使用它。我还要担心,我应该知道的SetName()GetName()方法有一些警告,这促使你如此奇怪地设计你的课程。在文档中没有找到对此警告的描述,我会对使用它感到紧张。

答案 1 :(得分:2)

简短的回答是肯定的。

问问自己为什么要这么做?以这种方式编写时,属性本质上是一种方法。例如,如果您想要通知其他代码区域名称已更改,则可以执行以下操作:

private string name;
public string Name
{
    get { return name; }
    set 
    {
        test = value;
        FireSomeChangedEvent("Name");
    }
}

请注意您添加的逻辑。为其他属性添加值设置逻辑也是不好的做法(即在Name的setter中设置LastName值);这可能成为调试的噩梦。

此外,如果您不需要向gettersetter添加其他逻辑,则使用以下语法而不是您使用的私有变量支持示例是完全可以接受的

public string Name {get; set;}