스마트한 개발 공부/C#

[C#] 여러 가지 메소드 반환타입

스마트한지노 2021. 10. 31. 18:26
728x90
반응형

메서드의 반환 타입에는 여러 종류가 있다.
전달받은 리스트의 총합,최대값,평균을 구하는 메서드를 만든다고 해보자.

  1. ref, out 파라미터를 사용
  2. 하나의 단위로 묶어서 반환 (구조체, 클래스)
  3. 하나의 단위로 묶어서 반환 (익명타입)
  4. 튜플로 묶어서 반환

위의 4가지 방법의 반환 방법을 알아보자.

1. ref, out 파라미터를 사용

class Calc
{
     public int Calculate(List<int> list, out int max, out double avg)
     {
         int sum = 0;
         max = 0;
         avg = 0.0;

         foreach(int item in list)
         {
             sum += item;
             if (max < item)
                 max = item;
         }
         avg = (sum * 1.0) / list.Count;

         return sum;
     }
}

//Main()

List<int> list = new List<int> { 1, 4, 6, 8, 9 };
Calc c1 = new Calc();

int result = c1.Calculate(list, out int max, out double avg);
Console.WriteLine($"sum :{result} - max :{max} - avg : {avg}");

2. 하나의 단위로 묶어서 반환(클래스, 구조체)

struct CalcResult
{
    public int sum;
    public int max;
    public double avg;
}

class Calc
{
    public CalcResult Calculate(List<int> list)
    {
        int sum = 0;
        int max = 0;
        double avg = 0.0;

        foreach (int item in list)
        {
            sum += item;
            if (max < item)
                max = item;
        }
        avg = (sum * 1.0) / list.Count;

        CalcResult result;
        result.sum = sum;
        result.max = max;
        result.avg = avg;

        return result;
    }
}

//Main()

List<int> list = new List<int> { 1, 4, 6, 8, 9 };
Calc c1 = new Calc();
CalcResult cr =c1.Calculate(list);
Console.WriteLine($"sum :{cr.sum} - max :{cr.max} - avg : {cr.avg}");

3. 하나의 단위로 묶어서 반환 (익명타입)

class Calc
{
    public dynamic CalculateDynamic(List<int> list)
    {
        int sum = 0;
        int max = 0;
        double avg = 0.0;

        foreach (int item in list)
        {
            sum += item;
            if (max < item)
                max = item;
        }
        avg = (sum * 1.0) / list.Count;            

        return new {Sum=sum, Max=max, Avg=avg };
    }
}

//Main()

List<int> list = new List<int> { 1, 4, 6, 8, 9 };
Calc c1 = new Calc();
dynamic d1 = c1.CalculateDynamic(list);
Console.WriteLine($"sum :{d1.Sum} - max :{d1.Max} - avg : {d1.Avg}");

4. 튜플로 묶어서 반환

 class Calc
{
    public (int, int, double) CalculateTuple(List<int> list)
    {
        int sum = 0;
        int max = 0;
        double avg = 0.0;

        foreach (int item in list)
        {
            sum += item;
            if (max < item)
                max = item;
        }
        avg = (sum * 1.0) / list.Count;

        return (sum, max, avg);
    }
}

//Main()
List<int> list = new List<int> { 1, 4, 6, 8, 9 };
Calc c1 = new Calc();
(int result, int max, double avg) = c1.CalculateTuple(list);
Console.WriteLine($"sum :{result} - max :{max} - avg : {avg}");
728x90
반응형