我应该将此getter转换为方法吗?

时间:2013-03-06 18:53:10

标签: c# methods properties getter

在过去的几天里,我一直在阅读C#中的属性和方法之间的差异,以及何时使用它们。我读到的大多数文章/问题都表明,吸气剂应该是“轻巧的”,并且内部永远不会有大量的逻辑或复杂的操作。

现在我有一个get,我认为它属于属性和方法之间的界限,所以我想看看你们都在想什么,如果我应该改变方法或留在吸气剂。

欢迎任何其他建议:D

public decimal[] getPreprocData
{
    get
    {
        int i = 3;
        decimal[] data = new decimal[9];

        data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
        data[1] = duration.Value;
        data[2] = flowRate.Value;

        foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
        {
            data[i] = nud.Value;
            i++;
        }

        return data;
    }
}

3 个答案:

答案 0 :(得分:6)

Properties&amp; Field通常为 Noun methods&amp; functions通常为 Verb

所以,getPreprocData应该是method。因为它对对象(类)的实例采取了动作。


从我自己的角度来看,由于您的财产永远不会使用setter,因此使用method比使用property更好。

在没有设置任何内容时拥有属性的重点是什么。


您的财产可以按以下方式实施:

public decimal[] GetPreprocData()
{
        int i = 3;
        decimal[] data = new decimal[9];

        data[0] = (start.Value.Hour * 3600) + (start.Value.Minute * 60);
        data[1] = duration.Value;
        data[2] = flowRate.Value;

        foreach (NumericUpDown nud in gbHTF.Controls.OfType<NumericUpDown>().OrderBy(nud => nud.TabIndex))
        {
            data[i] = nud.Value;
            i++;
        }

        return preprocData;
}

答案 1 :(得分:1)

这看起来确实应该是一种方法。

您正在进行一些初始化,gbHTF.Controls的大小无限制,因此可能最终会变得昂贵。

它也隐藏在一个实际上并没有描述你在做什么的属性名称后面 - 这会更好地作为描述性方法。

答案 2 :(得分:0)

将其转换为方法。那里有处理和业务逻辑。

通常,我会将属性限制为格式化或组合其他属性,这样您就可以清楚地分离关注点。