목록프로그래밍 언어 (72)
나의 지식 보관소
선택적 매개 변수는 메서드의 매개 변수에 기본값을 가지게 하고 싶을 때 사용한다. 예를 들어보겠다. 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 ..
자바에서는 foreach라는 용어를 사용하지 않는 듯 하지만 내가 다룬 다른 언어에서는 foreach라는 용어를 사용하니 foreach라는 용어로 부르도록 하겠다. foreach문은 배열밑 컬렉션의 길이만큼 반복할 때 사용되는 제어문으로서, 기존의 for문과는 달리 반복 실행을 위해 카운터 변수와 증감 식이 존재하지 않는다. for ( 타입변수 : 배열 ) { 실행문; } for문의 괄호안에, 배열에서 꺼낸 항목을 저장할 변수와 ':'(콜론) 배열 순으로 작성한다. 그 뒤 배열에서 항목을 하나하나 차례로 꺼내오면서 배열이 끝날 때까지 실행문을 실행한다.
자바에서의 '/'과 '%'연산은 우측 피연산자에 0을 사용할 경우 ArithmeticException(예외)이 발생한다. 하지만 실수인 0.0이나 0.0f로 나누면 '/' 연산의 결과는 Infinity(무한대)의 값을 가지고, '%'연산의 결과는 NaN(Not a Number)을 가진다. 중요한 것은 이러한 값들( Infinity와 NaN )이 나오면 다음 연산을 수행하면 안 된다. 이러한 값들은 어떤 수와 산술 연산을 하더라도 Infinity와 NaN이 산출되므로 데이터가 엉망이 될 수 있다. 때문에 '/'와 '%'의 연산 결과가 Infinity 또는 NaN인지 아닌지 확인하는 작업이 필요하다. 그 방법은 Double.isInfinity( )와 Double.isNaN( ) 메서드를 사용하면 된다. 해당..