728x90
반응형
메서드의 반환 타입에는 여러 종류가 있다.
전달받은 리스트의 총합,최대값,평균을 구하는 메서드를 만든다고 해보자.
- ref, out 파라미터를 사용
- 하나의 단위로 묶어서 반환 (구조체, 클래스)
- 하나의 단위로 묶어서 반환 (익명타입)
- 튜플로 묶어서 반환
위의 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
반응형
'스마트한 개발 공부 > C#' 카테고리의 다른 글
[C#] object, var, dynamic 비교 (0) | 2021.10.31 |
---|---|
[C#] Method에서 여러 개의 Return 값 받기 (0) | 2021.09.07 |
[C#] 변수를 상수형으로 만드는 방법 : readonly와 const (0) | 2021.08.19 |
[C#] Struct 구조체 (0) | 2021.08.19 |
[C#] 상속과 interface(인터페이스) 그리고 abstract class(추상 클래스) (0) | 2021.08.18 |