1. ref
- 파라미터를 참조형식으로 사용하는 것으로 연산하는 메소드에서 파라미터가 변경되면 원본의 값도 같이 변경된다.
2. out
- ref 와 마찬가지로 참조 형식의 파라미터이지만 출력 전용으로 호출하는 입장에서는 초기화할 필요가 없으며,
반드시 연산하는 곳에서 초기화해야 한다.
3. params
- 파라미터가 고정된 형태가 아니라 가변적인 것으로 전달할 수 있다.
- 배열과 다른 점은 파라미터를 배열로 선언하면 배열 그 자체지만,
params 는 동일한 형식의 파라미터 개수가 하나 이상으로 선언할 수 있다.
using System;
namespace SqlerCSharp.Ch15_01
{
class Program
{
//ref
public static void PassByRef(ref int number)
{
number++;
}
//out
public static void PassByOut(out int number)
{
number = 1;
number += 2;
}
//params
public static void PassByParams(params int[] args)
{
Console.WriteLine("===PassByParams===");
foreach (var item in args)
{
Console.WriteLine(item);
}
}
static void Main(string[] args)
{
//ref 호출
int number1 = 1;
Console.WriteLine("number1 초기값 : {0}", number1);
PassByRef(ref number1);
Console.WriteLine("PassByRef(ref number1) : {0}", number1);
//out 호출 : 인자를 초기화 하지 않음
int number2;
PassByOut(out number2);
Console.WriteLine("PassByOut(out number2) : {0}", number2);
//params 호출
PassByParams(1);
PassByParams(1, 2);
PassByParams(new int[] { 1, 2, 3 }); //파라미터가 가변이기 때문에 배열도 가능
}
}
}
'Language > C#' 카테고리의 다른 글
[C#] 델리게이트 / 무명 메소드 / 이벤트 (0) | 2020.12.26 |
---|---|
[C#] 확장 메소드(Extension Method) (0) | 2020.12.26 |
[C#] 프로퍼티(Property) / 인덱서(Indexer) (0) | 2020.12.26 |
[C#] 클래스 (0) | 2020.12.26 |
[C#] 문자열 다루기 - StringBuilder (0) | 2020.12.23 |