초보자를 위한 c# 200제 part 2

신승빈·2023년 7월 6일
0

Unity3d

목록 보기
4/7

배열

type[] variableName 
    = new type[N]
    = { data1, data2, ... }
    = new [N] { data1, data2, ..., dataN }    // 개수가 일치해야 함

System.Array 상속
IndexOutOfRangeException 발생할 수 있음

다차원 배열

type[,] variable 
    = a[N, M]
    = a[N][M]    // 가변배열 가능, 가변배열 시 M 없음

heap에 잡히는 가변배열의 크기는 아마 N * M이 아닐까?

Random class

Random r = new Random();
r.Next();
r.Next(N);
r.Next(N, M);
r.NextDouble();
r.NextBytes(array);    // 배열 전체를 채워줌, 0 ~ 255

Class, Struct

Person p;
Person q = p;

Class는 Reference type, Struct는 Value type
Person이 class라면 q와 p는 같은 객체를 가리킴
Person이 struct이라면 q와 p는 다른 객체
p가 new로 생성된 struct 객체라도 q와 p는 다른 객체

const

c#의 const는 bool, int, double같은 기본형만 사용 가능
class, struct, array는 const선언 불가능
대신 readonly를 사용해야 할 듯

const field(상수)

static처럼 ClassName.VariableName으로 접근
const field는 compile time에 결정되므로 실제로 literal하게 판정된다. static으로 생각해도 큰 문제는 없을 듯
그래서 아마 Data 영역에 저장될 것으로 생각됨
C++의 const variable의 역할은 readonly가 담당

Property

Getter(), Setter()를 손쉽게 생성 가능
get, set, value를 키워드로 사용

    class RectWithProp
    {
        public double Width { get; set; }
        public double Height { get; set; }
    }

    class RectWithPropFull
    {
        private double width;

        public double Width
        {
            get { return width; }
            set { if(value >= 0) width = value; }
        }

        private double height;

        public double Height
        {
            get { return height; }
            set { if(value >= 0) height = value; }
        }
    }

visual studio에서는 prop, propfull을 통해 빠르게 생성 가능
Expression Body Definition을 이용해 함수 정의 가능
Property는 뒤에 ()가 없는 함수로 생각하면 될 듯. 꼭 변수와 이름을 일치시킬 필요도 없음. 예제에서 일반 변수처럼 접근한 것들이 전부 Property를 통해 접근하는 방식이었음

DateTime

DateTime.Add(TimeSpan)
DateTime.ToLocalTime()
DateTime.ToUniversalTime()

DateTime.Compare()
DateTime.CompareTo()
DateTime.Equals()

DateTime.Today    // 오늘 정시를 나타내는 Property
DateTime.Now      // 지금을 나타내는 Property

DateTime.ToString(string DateTimeFormat)
String.Format(string DateTimeFormat, DateTime)

서기 1년 1월 1일 자정부터 tick(100 nano, 0.1ms) 계산
TimeSpan : 시간 간격을 나타내는 데이터

DateTime format

국가별 다른 날짜, Locale에 따른 출력
표준 형식 지정자를 사용할 수도 있음

CultureInfo

지역별 언어, 특정 문화권 정보
생성자, CultureInfo.CreateSpecificCulture(string)을 통해 생성

매개변수

value, ref, out keyword를 통해 전달
사용 시 ref, out 명시 필수

가변길이

params keyword 사용
가변길이 사용 시 추가 매개변수 불가능
array로 접근
Object type으로 매개변수를 받으면 모두 받을 수 있을거라 생각했지만 그냥 Object Array type 매개변수 1개로 판단

선택적 인수, 명명된 인수

선택적 인수 : 매개변수 값 미리 지정
명명된 인수 : 매개변수를 지정

profile
이상을 길잡이 삼아 로망을 추구합니다.

0개의 댓글