반응형
params 란?
- 함수에서 매개변수를 넘길때 1,2,3개 이렇게 개수를 지정해 주었던 것과 달리, params 키워드를 사용하면 개수에 제한 없이 매개변수를 넘길 수 있다.
- 가변 인자 매개변수 = 개수가 변하는 인자들을 넘길 수 있는 매개변수
params 규칙
- 선언 부에서 params 키워드는 타입 맨 앞에 와야한다.
- 가변인자 매개변수를 선언할 때는 []를 이용하여 1차원 배열로 선언해야 한다.
- 데이터 타입이 애매할 때는 모든 클래스의 상위 클래스인 object 클래스 배열을 사용할 수 있다.
- 호출부에서 각 매개변수는 쉼표로 구분해야한다.
- 호출부에서 매개변수를 보내지 않아도 된다. 이경우 길이는 0이되고 비어있는 매개변수가 된다.
- 선언 - public static void Add(params int[] list)
- 호출 - Add(1,2,3,4,5,6,7,8,9,3,5,6,3,8,7,4,3,7,9) [가능]
특정한 데이터 타입 지정 예시
public static void Add(params int[] myList)
{
int sum = 0;
//foreach example
foreach (int elem in myList)
{
Console.Write(elem.ToString() + " ");
sum += elem;
}
/* for loop example.
for(int i=0; i<myList.Length; ++i)
{
Console.Write(myList[i].ToString() + " ");
sum += myList[i];
}
*/
Console.WriteLine();
Console.WriteLine("params Length : " + myList.Length.ToString());
Console.WriteLine("params sum : " + sum.ToString());
Console.WriteLine();
}
static void Main(string[] args)
{
Console.WriteLine("1. 매개변수 여러개");
Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Console.WriteLine("2. 매개변수 없음");
Add();
}
//1. 매개변수 여러개
//params Length : 10
//params sum : 55
//2. 매개변수 없음
//params Length : 0
//params sum : 0
최상위 타입 objcet 지정 예시
public static void Mixed(params object[] myList)
{
Console.WriteLine("[Length] : " + myList.Length.ToString());
//------------------------------------------
Console.Write("[Print all] : ");
foreach (object elem in myList)
{
//모든 요소 출력.
Console.Write(elem.ToString() + " ");
}
Console.WriteLine();
//------------------------------------------
Console.Write("[string type] : ");
for (int i=0; i<myList.Length; ++i)
{
Type t = myList[i].GetType();
if (t.Equals(typeof(string)))
{
//string 타입과 같은것만 출력
Console.Write(myList[i].ToString() + " ");
}
}
Console.WriteLine();
//------------------------------------------
Console.Write("[int type] : ");
foreach (object elem in myList)
{
Type t = elem.GetType();
if (t.Equals(typeof(int)))
{
//int 타입과 같은것만 출력
Console.Write(elem.ToString() + " ");
}
}
Console.WriteLine();
}
static void Main(string[] args)
{
Mixed(1, "Black", 2, 3, 4, "C#", 11, "Example");
}
//[Length] : 8
//[Print all] : 1 Black 2 3 4 C# Example
//[string type] : Black C# Example
//[int type] : 1 2 3 4 11
반응형
'C#' 카테고리의 다른 글
[C#] 부동 소수점 오차(플로팅 연산 오류) (0) | 2023.12.12 |
---|---|
[C#] 객체지향 프로그래밍 이해하기 (0) | 2023.10.12 |
[C#] 링크(LINQ) - SequenceEqual, Concat, Zip (0) | 2023.07.20 |
[C#] 링크(LINQ) - 집합 연산자 Distinct, Union, Intersect, Except (0) | 2023.07.20 |
[C#] 링크(LINQ) Take(), Skip() (0) | 2023.07.17 |