C# 문법 종합반 강의 수강이 시작됐다.
오늘은 강의를 들으며 새로 안 내용과 그것을 기반으로 따로 찾아본 내용을 정리하려고 한다.
1주차
자동완성이 사라졌을 때
- 컨트롤 + 스페이스바
코드 템플릿 활용 (되도록 사용않고 코드 직접 짜기)
예) for 입력 후 탭 두번
-> for문에 기본이 되는 코드가 자동완성됨
이스케이프 시퀀스
\r : 현재 줄 맨 앞으로 이동
\b : 백스페이스 삽입
Console.Write(""); // \n가 안들어간 출력
Console.WirteLine(""); // \n가 들어간 출력
decimal
C#에서 실수를 저장할 수 있는 변수
16바이트
고정소수점 방식, 10진수로 저장 -> 더 정확한 결과를 보장
약 28~29자리의 유효숫자
정밀한 계산이 필요한 금융, 세금 등의 분야에서 사용
double: 8바이트, 부동소수점 방식, 약 15~16자리의 유효숫자, decimal보다 연산이 빠름
double d = 1.1 + 1.2; // 3.3000000000000003
decimal m = 1.1M + 1.2M; // 3.3
더 정확한 결과를 보장하는 decimal
코드 컨벤션(Code Convention)
개발자들 사이에서 가독성과 유지 보수를 위해 약속된 코드 작성 규칙
중괄호 위치, 변수명 대문자 소문자 등
Console.ReadLine
- c++에서의 cin
- string만 받을 수 있음
var
- auto같은 자료형
문자열 관련
Split
string str = "Hello, World!";
string[] words = str.Split(',');
, 을 기준으로 문자열 분할
IndexOf
int index = str.IndexOf("World");
str 문자열에서 World문자열의 첫 번째 인덱스를 찾아 index변수 에 저장
Replace
string newStr = str.Replace("World", "Universe");
str 문자열에서 "World"를 "Universe"로 대체한 문자열을 newStr에 저장
문자열 형식화
string m = string.Format("asdf {0} asdf {1}", name, age);
{0}에 name, {1}에 age 들어감
문자열 보간
string name = "Moon";
int age = 23;
string m = $"My name is {name} and I'm {age} years old.";
문자열 비교
Console.WriteLine(string.Compare(str1, str2));
2주차
문자열 맨 앞에 있는 한 글자만 가져와라
char input = Console.ReadLine()[0];
알파벳 확인 코드
if((input >= 'a' && input <= 'z') || (int >= 'A' && input <= 'Z'))
문자열 코드 생략
int i = int.Parse(Console.ReadLine());
2차원 배열
int[,] arr = new int[2, 3]; // 2행 3열
arr[0,0] = 1;
arr[0,1] = 2;
...
// 선언 및 초기화
int[,] arr2 = new int[2, 3] { {1,2,3},{4,5,6},{7,8,9} };
HashSet - 중복되지 않은 요소들로 이루어진 집합
콘솔 화면 초기화
Console.Clear();
콘솔 커서 위치 조정
Console.SetCursorPosition(x, y);
3주차
메서드
클래스나 구조체에서 객체의 동작을 정의하는 함수
자동 프로퍼티
class Person
{
public string name {get; set;}
}
...
person.name = "moon";
C#에서는 다중상속을 지원하지 않음
인터페이스(기본 추상 클래스)를 상속받을 때만 가능
- 클래스는 하나의 클래스와 여러 개의 인터페이스를 동시에 상속받을 수 있음
가상메서드 (virtual)
추상메서드(abstract)
- 부모 클래스에서 메서드의 정의가 되어있지 않음, 자식 클래스에서 무조건 정의
오버라이딩 - 상속 관련!
제너릭
C++의 템플릿
제너릭은 두 개 이상 사용 가능
class Pair<T1, T2> {...}
Pair<int, string> pair1;
Pair<double, bool> pair2;
ref
c++에서 함수 매개변수에 넣는 &와 같음
매개변수를 수정하면 원래 값에 영향
복사를 하지 않으므로 성능이 좋다. 하지만 너무 남발하면 코드 가독성이 떨어지니 유의
out
ref와 비슷하지만 무조건 값이 들어있도록 바뀌어야 함
오늘 하루 회고
내배캠 강의를 들을 때마다 내가 몰랐던 부분과 애매하게 알고 있던 부분이 정말 많았다는 것을 느낀다.
오늘 문자열 관련한 함수를 많이 알았다. 이렇게 다양한 기능들이 있었다니..
메서드도 그냥 함수라고만 애매하게 알고 있었다.. 반성..
2주차 강의에 틱택토 게임을 만드는 과제가 있었는데
구글 봇이랑 틱택토 게임을 하면서 룰을 익혔다. 재미있었다. 고급은 도저히 못이기겠더라
오버라이딩과 오버로딩은 맨날 헷갈린다.
오버라이딩은 상속!!!! 기억하자..
내일은 4, 5주차를 끝내고 개인과제 하는 것이 목표다.
'내일배움캠프(Unity)' 카테고리의 다른 글
내일배움캠프 게임개발(Unity) 8일차 231108 TIL (1) | 2023.11.08 |
---|---|
내일배움캠프 게임개발(Unity) 7일차 TIL (0) | 2023.11.07 |
내일배움캠프 게임개발(Unity) 5일차 TIL - 프로젝트 발표날 (1) | 2023.11.03 |
내일배움캠프 게임개발(Unity) 4일차 TIL (0) | 2023.11.02 |
내일배움캠프 게임개발(Unity) 3일차 TIL (0) | 2023.11.01 |