(C#) 18. 생성자
객체를 만들 때 초기값을 채우는 생성자. this()로 생성자끼리 연결하는 방법과 실행 순서, 생성자를 하나라도 만들면 기본 생성자가 사라지는 것, this로 이름 가림을 푸는 것을 정리했다.
객체를 만들 때 초기값을 채우는 생성자. this()로 생성자끼리 연결하는 방법과 실행 순서, 생성자를 하나라도 만들면 기본 생성자가 사라지는 것, this로 이름 가림을 푸는 것을 정리했다.
속성과 기능을 한 덩어리로 묶는 class와 struct를 처음 써봤다. 같은 코드인데 struct는 복사되고 class는 공유되는 것을 직접 확인하고, 그 차이가 어디서 오는지 정리했다.
enum·struct·함수·ref/out을 한 번에 써서 만든 첫 게임. 죽어도 필드를 못 벗어나는 버그, Random을 함수마다 새로 만들어 같은 몬스터만 나오는 문제, 33%가 실제로는 34%인 것을 확인했다.
같은 계산을 반복문과 재귀로 각각 짜봤다. 13!부터 int가 넘치는 것, 재귀가 깊어지면 잡을 수 없는 예외로 죽는 것, 음수를 넣으면 1이 나오는 문제를 확인했다.
안쪽 루프의 횟수를 바깥 변수에 맞추면 삼각형이 나온다. 줄 번호와 개수의 관계를 어떻게 잡는지, 역삼각형과 피라미드로 확장하는 법, 루프 없이 한 줄로 쓰는 법까지 정리했다.
이중 루프를 처음 써본 예제. 바깥과 안쪽 루프가 각각 무엇을 세는지, 루프 순서를 바꾸면 출력이 어떻게 달라지는지, 표처럼 가로로 찍으려면 무엇이 필요한지 정리했다.
같은 이름의 함수를 여러 개 두는 오버로딩과 기본값 매개변수. 반환형은 구분에 안 쓰인다는 것, 둘을 섞으면 어느 쪽이 불리는지 애매해지는 것, 기본값이 호출부에 박힌다는 것을 확인했다.
값을 복사해 넘기는 기본 동작과 ref/out의 차이를 Swap과 Divide로 확인했다. 클래스를 ref 없이 넘겼을 때 멤버 수정은 반영되는데 재할당은 안 되는 이유까지 정리했다.
반복되는 코드를 함수로 묶으면서 확인한 것. 매개변수가 복사본이라 안에서 바꿔도 밖이 안 바뀐다는 점과, static이 붙은 이유, 클래스 이름을 생략할 수 있는 조건을 정리했다.
소수 판정으로 break를, 배수 찾기로 continue를 확인했다. 1을 넣으면 소수로 나오는 버그, while에서 continue가 무한 루프가 되는 이유, 중첩 루프에서 break가 하나만 빠져나오는 문제를 정리했다.