목록프로그래밍 언어/C# (24)
나의 지식 보관소
형변환 연산자는 만일 형변환이 불가능할 경우 예외를 발생시킨다. 이러한 점 때문에 try~catch 문이 거의 강제된다.( 만일 예외처리 조차 하지않으면 프로그램이 예기치 않게 종료된다. ) 때문에 c#은 as와 is 연산자를 제공한다. is 연산자는 객체가 해당 형식에 대해 형변환이 가능한지 여부를 bool 값으로 반환한다. as 연산자는 형변환 연산자와 똑같은 역할을 하지만 형변환에 실패할 경우에 as연산자는 null을 반환한다.
로컬 함수는 메서드 안에서 선언되는 함수를 뜻한다. 로컬 함수는 클래스의 멤버가 아니기 때문에 메서드가 아닌 함수로 불린다. 로컬 함수의 특징으로는 자신이 선언돼있는 메서드의 지역변수를 사용할 수 있다는 점이다.
선택적 매개 변수는 메서드의 매개 변수에 기본값을 가지게 하고 싶을 때 사용한다. 예를 들어보겠다. 1 2 3 4 void SetPerson( int height, int weight, int iq = 100, string name = "홍길동" ) { //구현 부 } 위의 코드에서 보이는 iq와 name변수는 기본값을 가지므로 메서드 호출 시 해당 데이터의 할당을 생략할 수도 생략하지 않을 수도 있다. 이처럼 기본값을 가지는 매개변수는 상황에 따라 데이터를 할당하거나 할당하지 않을수 있으므로 선택적 매개변수라고 부른다. 선택적 매개변수를 사용할시 지켜야 할 규칙이 있는데 선택적 매개변수는 무조건 필수 매개 변수 뒤에 와야 한다.
보통 메서드 호출 시 넘기는 데이터들이 어느 매개변수에 할당될지 결정하는 것은 순서이다. 하지만 메서드 호출 시 매개변수의 목록이 아주 길어져 있다면 순서를 하나하나 보고 매개변수를 넘겨주는 것은 가독성이 떨어지고 비효율적인 작업일 수도 있다. 그래서 C#은 순서가 아닌 매개변수의 이름에 근거하여 매개 변수를 넘겨주는 기능인 명명된 매개 변수라는 기능을 제공한다. 명명된 매개변수의 적용은 매우 간단하다. 메서드 선언은 평소대로 하면 되고 메서드 호출 시에 매개변수의 이름 뒤에 콜론을 붙인 뒤 할당할 데이터를 적어주면 된다. 예를 들어 아래와 같은 메서드가 있다고 가정해 보자. 1 2 3 4 void SetPerson( int height, int weight, int iq, string name ) { ..
가변길이 매개 변수란 매개 변수의 개수가 변할 수 있는 매개변수를 뜻한다. 메서드 오버로딩과는 다른점은 매개 변수의 형식이 다른 경우에는 가변길이 매개변수를 사용하지 못한다. 가변길이 매개 변수는 params 키워드와 배열로 선언한다. 입력받은 수들의 총합을 구하는 예시를 들어보겠다. 1 2 3 4 5 6 7 8 9 int Add(params int[] args){ int total; foreach(int i in args){ total += i; } return total; } 메서드의 사용은 다음과 같다. 1 2 Console.WriteLine(Add(1,2,3)); Console.WriteLine(Add(1,2,3,4,5));
메서드 오버로딩은 매개변수의 수와 형식에 따라 메서드 이름을 여러 개 만들어야 하는 불편함을 해소시켜주는 존재다. 예를 들어서 숫자 두 개를 더하는 Plus라는 이름의 메서드가 있다고 가정해보자. 우리는 정수를 두 개 입력받는 Plus 메서드 외에도 실수 형식 두 개를 받는 메서드, 정수 하나 실수 하나를 받는 메서드 등 거의 같은 역할을 하는 메서드임에도 불구하고 매개변수의 형식이 다르다는 이유 하나로 메서드를 여러 개 정의해야 한다. 그렇다면 메서드 이름 또한 intPlus, doublePlus 등 여러 개가 되었을지도 모른다. 하지만 c#에서 제공하는 메서드 오버로딩 덕택에 그럴 필요가 없다. 우리는 단지 메서드의 이름은 똑같이 유지한 채 매개변수의 수나 형식이 다른 메서드를 여럿 만들면 된다. 예..
널 조건부 연산자 ( ?. or ?[ ] ) 널 조건부 연산자는 객체의 멤버에 접근하기전 해당 객체가 null인지 아닌지를 판별하고 만약 객체가 null이라면 결과로 null을 반환하고, null이 아니라면 '.' 뒤에 지정된 멤버 또는 '[]'의 인덱스에 해당하는 값을 반환합니다. NULL 병합연산자 ( ?? ) 널 병합 연산자는 왼쪽 피연산자가 null인지를 판단하고 만약 null이 아니라면 왼쪽 피연산자를 반환하고, 만약 null이라면 오른쪽 피연산자를 반환합니다.
값에 의한 매개 변수 전달 메서드를 호출할 때 데이터를 복사해서 매개 변수에 넘기는 것을 값에 의한 전달이라고 부른다. 어떤 변수를 매개변수로 전달하면 값이 복사될뿐이므로, 매개변수의 값을 변경하여도 원래의 변수는 값이 변하지 않는다. 참조에 의한 매개 변수 전달 메서드를 호출할 때 매개 변수가 인자로 넘겨진 변수를 직접 참조 하는것을 참조에 의한 전달이라고 부른다. 매개 변수가 변수를 직접 참조할 경우에 매개변수를 수정하면 매개 변수가 참조하고 있는 변수에도 수정이 이루어진다. ref 키워드 ref 는 C#에서 참조에 의한 매개 변수 전달을 위한 키워드중 하나이다. 사용법은 간단하다. 아래와 같이 매개변수 앞에 ref 키워드를 붙여 주면 된다 1 2 3 4 void swap(ref int a, ref ..