C#에선 함수의 하위 개념
함수 아래에 메소드, 프로퍼티, 인덱서가 있음
public static int Plus(int a, int b) { return a + b };
public static int Plus (int a, int b) { return a + b };
접근제어자 한정자 반환자료형 이름 매개변수 몸체 반환값
C#에서는 접근제어자 필수사항, 한정자는 선택사항
서식화된 문자열 이거 따로 정리
Console.WriteLine( "Name:{0}, Phone:{1}", name, phone );
식에 대한 정의
반환 값이 있으면 식?
(none), ref, in, out
(none) : 콜 바이 밸류,
ref : 콜 바이 레퍼런스
in : 콜 바이 레퍼런스 (읽기 한정)
out : 콜 바이 레퍼런스
ref 와 out 의 차이
out 은 메소드 내에서 무조건 한 번 이상 쓰기(할당)를 해야 함
함수 내에서 따로 할당, 초기화하지 않고 바로 쓸 수 있음
ref:
매개변수에 값을 전달하기 전에 초기화가 반드시 이루어져야 함
in:
메서드 내에서 in 매개변수를 수정할 수 없음
out:
메서드 내에서 초기화되어야 함.
따라서 호출자는 out 매개변수로 전달된 변수를 초기화하지 않아도 됨.
인스턴스 메소드와 스태틱 메소드는 클래스 또는 구조체 내에서 정의되는 메소드들을 뜻함
'정의와 호출'
인스턴스 메소드 - 특정 클래스 또는 구조체의 인스턴스에 대해 작동하는 메소드, 호출하려면 해당 클래스의 객체를 먼저 생성해야함
스태틱 메소드 - 클래스 또는 구조체 자체에 속한 메소드로, 인스턴스를 생성하지 않고도 호출할 수 있음, static 키워드로 선언됩니다.
'메모리 할당'
인스턴스 메소드 - 각 객체 인스턴스마다 메소드 본문의 메모리는 공유되지만,
이 메소드가 액세스하는 인스턴스 변수들은 각 인스턴스마다 고유한 메모리를 가짐
스태틱 메소드 - 이 메소드는 클래스 레벨에서만 메모리가 할당되며, 모든 인스턴스에서 공유
'데이터 액세스'
인스턴스 메소드 - 해당 클래스의 인스턴스 멤버(변수, 프로퍼티, 다른 인스턴스 메소드 등)에 액세스할 수 있음
스태틱 메소드 - '인스턴스 멤버에 직접 액세스할 수 없음'. 스태틱 메소드는 오직 스태틱 멤버에만 액세스 가능함
'용도'
인스턴스 메소드 - 객체의 상태를 표현하거나 조작하는 로직을 포함
스태틱 메소드 - 인스턴스의 상태와 무관하게 동작하며, 주로 유틸리티 함수나 특정 작업을 수행하는 함수로 사용
(예: Math.Abs, Math.Max와 같은 수학 관련 함수)
'this 키워드'
인스턴스 메소드 - this 키워드를 사용하여 현재 인스턴스에 액세스할 수 있음
스태틱 메소드 - this 키워드는 스태틱 메소드 내에서 사용할 수 없음