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

Kit*_*inz -1 c# methods getter properties

在过去的几天里,我一直在阅读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;
    }
}
Run Code Online (Sandbox Code Playgroud)

PaR*_*RaJ 6

Properties&Field通常是Nounmethodsfunctions一般Verb.

所以,getPreprocData应该是一个method.因为它对对象(类)的实例进行了动作.


从我自己的角度来看,因为你的财产是从来没有利用的setter,它始终是更好地使用methodproperty.

当没有任何东西可以设置时,有一个属性是什么意思.


您可以将属性实现为以下方法:

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;
}
Run Code Online (Sandbox Code Playgroud)