티스토리 뷰
공부할 내용 [수업자료와 순서를 소폭 변경하여 구성하였습니다.]
- 인터페이스
- 난수 생성
- 문자열 처리
- 참조형 인수 [out / ref]
- 자료형 확인 및 캐스팅 [is / as]
인터페이스(Interface)
- 클래스나 구조체를 '선언 만' 해 놓는 요소.
- interface 인터페이스명으로 선언한다.
- 인터페이스 내부의 변수나 메서드는 선언 만 가능하지, 정의는 불가능하다.
- 추상 클래스와의 비교
- 추상 클래스와 동일하게, 인터페이스도 선언 만 하고, 자식 클래스에서 정의하여 사용하는 구조다.
- 추상적인 요소를 포함할 뿐인 추상클래스와는 달리, 인터페이스는 모든 구성 요소가 추상적이어야 한다.
- 클래스나 구조체를 선언할 때 인터페이스를 상속받아서 활용한다.
- 이 때, 상속받은 인터페이서 내부의 변수나 메서드는 반드시 정의를 하여야 한다.
- 클래스의 상속과는 달리, 다중 상속이 가능하다. 부모 클래스와 동시 상속도 가능.
- [추가] 인터페이스의 용도는 다음과 같다.
- 서로 완전히 다른 클래스의 공통 요소를 선언하는 데 사용한다.
- 시스템 내부의 클래스 유형 별 표준 골격을 형성하는 용도로 사용한다.
난수(랜덤 숫자) 생성
2가지 방법이 있다.
- Random 클래스를 생성한 뒤, Random 클래스의 내부의 메서드를 활용하는 방법.
※ Random 클래스는 C#에서 지원하는 요소다.- Random.Next(): 임의의 자연수를 반환한다.
- [추가] Random.Next((int) a): a 미만인 임의의 자연수를 반환한다.
- Random.Next((int) a, (int) b): a 이상 b 미만인 임의의 정수를 반환한다.
- [추가] Random.NextDouble(): 0.0~1.0 범위 안에서 임의의 실수를 반환한다.
- [추가] Random.NextBytes(byte[] buffer): buffer 배열에 0~255 범위 안에서 임의의 값을 채워넣는 메서드.
- [추가] UnityEngine 내부의 Random 패키지를 활용하는 방법.
※ Random 패키지는 유니티에서 지원하는 것으로 C#의 내용이 아니다.- Random.Range(a, b): a 이상 b 미만인 임의의 정수를 반환한다.
- Random.ColorHSV(): HSV 색 공간을 이용, 임의의 색상을 반환한다.
┗ 인자로 4쌍[hue, Saturation, Value, Alpha]의 Min, Max값을 지정할 수 있다. 반드시 쌍으로 추가되야 한다.- HSV는 다수의 소프트웨어에서 자주 사용되는 [원형 팔레트 + 명도 바 + 투명도 바] 방식을 의미한다.
※ 유니티의 GUI는 Hue 값을 원형 팔레트로 지정한 뒤, 2차원 평면에서 Saturation과 Value의 좌표를 지정하고, Alpha 값을 투명도 바를 통해 추가 지정하는 방식으로 구성되어 있다.
- Hue: 색상. 원형 팔레트의 각도를 의미한다.
- Saturation: 채도. 원형 팔레트의 원점으로 부터의 거리를 의미한다.
- Value: 명도. HSV 모뎅 상으로는 깊이에 해당하며, 명도 바의 값을 의미한다.
- Alpha: 투명도. HSV 모델에 추가해서 사용하는 개념으로, 투명도 바의 값을 의미한다.
- HSV는 다수의 소프트웨어에서 자주 사용되는 [원형 팔레트 + 명도 바 + 투명도 바] 방식을 의미한다.
- Random.InitState(int seed): seed값에 맞춰서 난수 생성 방식을 초기화한다.
- 컴퓨터의 난수 생성은 실제로 난수를 생성한다고 하기 보다는 '끊임 없이 변하는 요소를 기반으로 뽑아낸 결과 수치'에 가깝다. 이 함수는 이 '변하는 요소'를 seed에 맞춰서 초기화 하는 메서드다.
문자열 처리
문자열과 관련된 메서드들을 정리하는 항목
※ 제일 앞 알파벳이 대문자일 경우에는 패키지 및 메서드이며, 뒤에 숫자가 붙으면 변수명이다.
- string1.Length: 대상 string의 길이를 반환한다.
- string1.Equals(string2): string1과 string2를 비교하여 같을 시 true, 다를 시 false를 반환한다.
※ string1 == string2 같은 방식으로도 사용 가능. - string1.Substring( (int) a, (int) b): 문자열의 a번쨰 글자 부터 b개 글자를 추출하여 반환한다.
- string.Substring( (int) a): 문자열의 처음 부터 a개 글자를 추출한다.
- string1.Split( (char) a): 문자 a를 기준으로 분할된 문자열들의 배열을 반환한다.
- String.Concat(string1, string2, ...): 인수가 된 문자열을 순서대로 병합하여 구성한 문자열을 반환한다.
※ string1 + string2 + ... 같은 방식으로도 사용 가능. - String.Format(" ... {0} ... {1} ...", (val) a, (val) b, ...): { } 위치에 뒤의 변수를 대입한 문자열을 반환한다.
※ 이 때, { } 안에 숫자의 순번에 맞게끔 대입한다. - string1.ToCharArray(): string1의 내용을 char 자료형의 배열으로 변환하여 반환한다.
- 이 반대로 char자료형의 배열을 string으로 변환할 때에는 new String(char_array)를 쓰면 된다.
Out과 Ref
인수를 참조형으로 넘길 때 사용하는 한정자. out int a | ref int b 같은 방식으로 활용한다.
※ 하술할 3종의 한정자는 '적용 방식이 동일하기에' 이 한정자 사이의 차이로는 Overload가 불가능하다.
┗ 단, 이 한정자들의 적용 유무로는 Overload가 가능하다.
- out : 인수를 출력용으로만 사용하는 경우 사용되는 한정자.
- 함수 외부에서 초기화 하지 않고 인수로 사용해도 에러가 발생하지 않는다.
- 반대로, 함수 내부에서 해당 변수가 반드시 초기화가 되어야 한다.
- C# 7.0 이후 부터는 함수 호출할 때에 인수를 지정하는 괄호 안에서 변수를 선언하는 것도 가능하다.
- ref : 특별한 용도가 아닌 경우 사용되는 한정자. 입력과 출력 양쪽으로 사용이 가능하다.
- 원본 변수가 인수로 쓰일 시점에 초기화가 되어있지 않다면 error CS0165가 발생한다.
- 반대로, 함수 내부에서는 해당 변수를 굳이 초기화를 하지 않아도 무방하다.
- [추가] in : 인수를 입력용으로만 사용하는 경우 사용되는 한정자.
- out과 ref와는 달리, 함수 호출 시에는 한정자(in)을 기재할 필요가 없다.
- 함수 내부에서 값의 변경이 불가능하다. 당연하지만, 초기화도 불가능.
- out과 ref와는 달리, 옵션(선택형) 인수로 활용할 수 있다.
※ 옵션 인수: 인수의 기본 값이 정해져 있어, 호출 시 생략이 가능한 인수.
┗ [참고] 명명된 인수: 해당 변수가 어떤 매개변수의 인수로 사용되는 지'를 명시한 경우.
┗ 매개변수의 순서를 무시할 수 있고, 인수가 많은 경우의 가독성을 높일 수 있다.
┗ 예시) Funtion(parameter3: argument1, parameter1: argument2) - 이외에는 ref와 동일하다.
Is와 As
- is : 타입 확인을 하기 위한 연산자. 타입이 맞는 경우 true를 반환하고 아닌 경우 false를 반환한다.
- value is type 방식으로 사용한다.
- [추가] Gettype: 대상 변수의 타입 정보를 반환하는 함수.
- value.Gettype() 방식으로 사용한다.
- 타입에 해당하는 객체 자체를 반환하기 때문에, string으로 받으려면 value.Gettype().Name으로 사용해야 한다.
- [추가] typeof: Gettype과는 반대로, 대상 타입을 기준으로 타입 정보를 반환하는 함수.
- typeof(type) 방식으로 사용한다.
- 마찬가지로, string으로 받으려면 typeof(type).Name으로 사용해야 한다.
- as: 타입을 변환하기 위한 연산자. 타입 변환이 성공하면 성공된 변수를 반환하고, 실패하면 null을 반환한다.
- value as type 방식으로 사용한다.
- 일반적인 변수 캐스팅과는 달리 실패한 경우의 판단 기준(null 반환)이 있어, 상대적으로 안전하다.
- [추가] 캐스트 식 : 타입을 변환하기 위한 연산자. 가장 쓰기 편한 타입 변환(캐스팅) 방식이다.
- (type)value 방식으로 사용한다.
- 실패한 경우 오류가 발생한다.
'스파르타 내일배움캠프 > 공부 내용 정리' 카테고리의 다른 글
(사전 캠프) C# 기초 문법 톺아보기 - 1 (0) | 2024.08.16 |
---|