티스토리 뷰

OOP/C#

6. C# 메소드

now2ah 2021. 1. 13. 22:09

클래스 안에서 코드 블럭을 실행시키는 함수를 메소드라 한다. 파라미터를 가질 수 있고 리턴값을 가질 수 있다. 메소드 명 앞에 리턴타입에 public이나 private같은 접근 제한자를 둘 수 있다. C#은 메소드에 파라미터를 전달할 때 값을 복사해 전달하는 Pass by Value 방식을 따른다. C++의 &와 같은 ref 키워드를 통해 Pass by reference 참조 전달을 할 수 있다.

 

이와 비슷한 기능으로 C# out 키워드가 있다. out을 사용하는 파라미터는 메소드 내에서 그 값을 반드시 지정하여 전달하게 되어 있는데 이 값은 초기화 할 필요가 없다.

 

//ref
static double Getdata(ref int a, ref double b)
{
	return ++a, * ++b;
}

//out
static bool GetData(int a, int b, out int c, out int d)
{
	c = a + b;
    d = a - b;
    return true;
}

static void Main(string[] args)
{
	//초기화 필요
    int x = 1;
    double y = 1.0;
    double ret = GetData(ref x, ref y);
    
    //초기화 불필요
    int c,d;
    bool bret = GetData(10, 20, out c, out d);
}

 

파라미터 전달 시 위치 상관없이 파라미터 명을 정하여 전달하는 파라미터를 Named Parameter라 부른다.

ex) Method(name: "H", age: 23);

 

디폴트 값을 가지는 파라미터를 Optional Parameter라 하고 파라미터 중 마지막에 놓여야 한다.

 

파라미터의 갯수를 알 수 없는 경우 params 키워드를 사용한다. 가변적인 배열을 인수로 갖게 해주고 마지막 위치에 단 하나만 존재하여야 한다.

int Calc(params int[] n)

int ans = Calc(1,2,3);
ans = Calc(5,6,7,8,9);

 

출처 - www.csharpstudy.com/CSharp/CSharp-method.aspx

'OOP > C#' 카테고리의 다른 글

자료형 Data type  (0) 2025.02.03
7. C# delegate, event  (0) 2021.01.20
5. C# Exception  (0) 2021.01.11
4. C# foreach문, yield  (0) 2021.01.10
3. C# 변수, 상수, 배열, 문자열  (0) 2021.01.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함