c#在属性和方法之间进行选择

时间:2016-06-22 15:35:03

标签: c#

在阅读此microsoft article关于何时使用属性和方法后,我有点困惑。

在底部的例子中,他们说:

  

以下代码示例显示了一个完整的应用程序   属性访问在计算上是便宜的。该   EmployeeData类错误地定义了一个返回副本的属性   一个数组。

具体而言

  

EmployeeData类错误地定义了一个返回a的属性   数组的副本。

这样做的正确方法是什么?

fiddle of the example code

3 个答案:

答案 0 :(得分:1)

这只是一个指导原则,但您的属性应尽可能轻量级。复制数组,就像在示例中一样,对于属性而言是非常广泛的。它应该是一种方法。这样,使用此代码的任何人都知道它可能需要一些时间。属性通常反映私有字段的访问者,因此人们期望它几乎立即返回。希望这是有道理的。

答案 1 :(得分:1)

该属性“不正确”,因为其中的代码很慢。

public EmployeeRecord[] Employees
{
    get 
    {
        return CopyEmployeeRecords();   // slow code in property - bad
    }
}

相反,写一个方法:

public EmployeeRecord[] Employees()
{
    return CopyEmployeeRecords();       // slow code in method - ok
}

答案 2 :(得分:0)

部分

  

在以下情况下使用方法而不是属性。

您正在阅读的文章中的

告诉您使用方法而不是属性的属性返回数组。

所以正确的方法是创建一个复制数组的方法。