如何制作高效的吸气剂和吸气剂方法

时间:2020-03-09 12:21:38

标签: c#

我试图从5个对象的三个整数中获得最大的值,该代码可以正常工作,但看起来有点笨拙且效率低下,我有什么方法可以改进它?是否可以在不使用数组的情况下结合一种方法getLargest来计算最大,最小和平均值?

  class Calc
  {
    private int num1, num2, num3, Ans;

    public int ans  { get { return Ans; }  set { Ans = value; } }
    public int Num1 { get { return num1; } set { num1 = value; } }
    public int Num2 { get { return num2; } set { num2 = value; } }
    public int Num3 { get { return num3; } set { num3 = value; } }

    public void getLargest(int x, int y, int z)
    {
         ans=(Math.Max(Math.Max(x, y), z));
    } 
  }

2 个答案:

答案 0 :(得分:2)

从技术上讲,您可以将其缩小很多...

public class Calc
{
    public int Max => Math.Max(Math.Max(Num1, Num2), Num3);
    public int Min => Math.Min(Math.Min(Num1, Num2), Num3);
    public int Avg => (Num1 + Num2 + Num3) / 3;
    public int Num1 { get; set; }
    public int Num2 { get; set; }
    public int Num3 { get; set; }
}

(这需要在顶部using System.Linq;

这是创建自动属性(无主体的属性),该属性将自动为您创建后备字段。

从技术上讲,这会效率更低一些,因为每次都会计算它们,因此您要做的是这样:

public class Calc
{
    public int Num1 { get; private set; }
    public int Num2 { get; private set; }
    public int Num3 { get; private set; }
    public int Max { get; private set; }
    public int Min { get; private set; }
    public int Avg { get; private set; }

    public Calc(int num1, int num2, int num3)
    {
        Num1 = num1;
        Num2 = num2;
        Num3 = num3;
        Max = Math.Max(Math.Max(Num1, Num2), Num3);
        Min = Math.Min(Math.Min(Num1, Num2), Num3);
        Avg = (Num1 + Num2 + Num3) / 3;
    }
}

(构造此对象的方法有很多,上面只是一种易于理解的方法)。这会将结果“缓存”在一个不变的对象中(这是您要学习的东西)。

答案 1 :(得分:0)

正如您所指定的,不使用数组,我想这是“清洁器”的最佳选择,尽管我怀疑这会带来明显的速度改进,是否有您不想使用数组的原因?该课程的目的是什么?

class Calc
{

    public int ans { get; set; }

    public int Num1 { get; set; }

    public int Num2 { get; set; }

    public int Num3 { get; set; }

    public void getLargest(int x, int y, int z)
    {
        ans = Math.Max(Math.Max(x, y), z);
    }

}