티스토리 뷰

공부할 내용 [수업자료와 순서를 소폭 변경하여 구성하였습니다.]

  • 인터페이스
  • 난수 생성
  • 문자열 처리
  • 참조형 인수 [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 모델에 추가해서 사용하는 개념으로, 투명도 바의 값을 의미한다.
    • 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 방식으로 사용한다.
    • 실패한 경우 오류가 발생한다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함