2023/08/14 TIL

김도현·2023년 8월 14일
0

TIL

목록 보기
20/76

들어가기 앞서

금일 한 일

C# 문법 종합반 1 ~ 2주차

[스파르타코딩클럽] C# 문법 종합반 - 1주차
[스파르타코딩클럽] C# 문법 종합반 - 2주차

오늘 배운 것

정적 배열 초기값(default)

값 형식(ex : int, double, char, bool)

  • 정수 : 0으로 초기화
  • 부동 소수점 : 0으로 초기화
  • 논리 값 : false로 초기화
  • 문자 : '\0' 으로 초기화

참조형식(ex : Class, string, Object, ...)

  • 참조형식 : null로 초기화

List사용법

  • 일반적으로 배열은 동적으로 크기 조절이 되지 않지만 List는 가능하다(Array.Resize(ref 변수명, 개수);로 변경가능 자세한 내용은 DevStory 블로그(구))
  • 리스트를 사용하면 배열의 크기에 대해서 크게 신경쓸 필요 없다.
  • 선형 리스트에 필요한 Key도 사용하지 않으면서 많은 기능을 제공합니다.

선언

List는 Generic이나 구조체로 간주되며 <>사이에 자료형을 선언해야 합니다.
예시

List<int> list = new List<int>();

또는 선언과 동시에 초기화도 가능하다

List<int> list = new List<int>(){1,2,3,4};

//또는

List<string> str = new List<string>(new string[] {"Hello", "World"});

값 추가

변수명.Add(값);으로 추가 할수있다
예시

list.Add(1);

중간에 새로운 값 넣기

변수명.Insert(넣는위치, 값);으로 넣을 수 있다.
예시

List<string> list = new List<string>();
list.Add("딸기");
list.Add("포도");
list.Insert(1, "사과");

출력값 : 딸기, 사과, 포도

검색방법

변수명.Contains(값);으로 해당 값이 리스트에 있는지 확인 할 수 있다. (bool 형식으로 반환)
예시

list.Contains(1);

출력

일반적인 배열처럼 출력이 가능하다

for(int i = 0; i < list.Count; i++)
{
	Console.WriteLine(list[i]);
}
  • 여기서 list.Count이란 현재 리스트에 담겨있는 개수를 정수형으로 반환 해준다.

문자열 리스트 출력

String.Join을 사용하면 하나의 문자열에 출력할 수 있다.
예시

List<string> list = new List<string>();
list.Add("Hello");
list.Add("World");

string line = string.Join(",", list.ToArray());
Console.WriteLine(line);

출력값 : Hello,World

해당 배열 출력

변수명.GetRange(시작위치, 끝날위치);
예시

List<int> list = new List<int>(){1,2,3,4};

foreach(int i in list.GetRange(1, 2))
{
    Console.WriteLine(i);
}

출력값 : 2, 3

해당 값 삭제

변수명.Remove(값);으로 일치한 값을 삭제 할 수 있다.

List<int> list = new List<int>(){1,2,3,4};
list.Remove(1);

모든 값 삭제

변수명.Clear();으로 모두 삭제가 가능하다.

매번 다른 Random 값 얻기

Random random = new Random(Guid.NewGuid().GetHashCode());
int randomValue = random.Next(1,5);

string 출력 방법

Format()

첫번째

string str = "World";
Console.WriteLine("값을 출력 : {0}, {1}","Hello",str);

출력값 : "값을 출력 : Hello, World"

두번째

string str = "World";
str = string.Format("값을 출력 : {0}, {1}","Hello",str);
Console.WriteLine(str);

출력값 : "값을 출력 : Hello, World"

세번째

int a = 10;
int b = 20;
Console.WriteLine($"값을 출력 : {a} + {b} = {a+b}");

출력값 : "값을 출력 : 10 + 20 = 30"

네번째

  • 띄우기
int a = 10;
int b = 20;
Console.WriteLine($"값을 출력 : {a, 3} + {b, -3} = {a+b,3}");

출력값 : "값을 출력 : 10 + 20 = 30"
출력값 : "값을 출력 : ///10 + 20/// = ///30" n의 개수 만큼 띄어쓰기가 진행되었다.

internal

  • internal은 public, protected, private와 같이 접근 권한 제어하는 키워드이다.
  • internal은 어셈블리 코드에서만 사용 가능하다.
논리적 접근 제한자물리적 접근 제한자
기준: 클래스 계층구조에서 접근을 제한기준: 어셈블리 단위로 접근을 제한
public, private, protectedInternal

자세한 참조 : 지우링 다음 카페

Dictionary

  • 딕셔너리(Dictionary)는 키와 값으로 구성된 데이터를 저장
  • 딕셔너리는 중복된 키를 가질 수 없으며, 키와 값의 쌍을 이루어 데이터를 저장
Keyvalue
"Alice""100"
"Bob""80"
"Charlie""90"

형태로 값을 보관

List와 차이점

List는 인덱스 번호를 사용하여 요소의 값을 얻는다. 그에 반해 Dictionary는 Key값을 사용하여 Value를 취득하므로, 숫자이외의 문자열 등을 키로 지정하여 세트의 값을 뽑아낼 수 있다.

선언

Dictionary<string, int> scores = new Dictionary<string, int>(); // 빈 딕셔너리 생성

추가

scores.Add("Alice", 100); // 딕셔너리에 데이터 추가
scores.Add("Bob", 80);
scores.Add("Charlie", 90);

삭제

scores.Remove("Bob");

수정

scores["Alice"]=80;

Key와 Value 양쪽 출력

air<string, int> pair in scores) // 딕셔너리 데이터 출력
{
    Console.WriteLine(pair.Key + ": " + pair.Value);

Key만 출력

foreach(string Key in scores.Keys) {
        Console.WriteLine(Key);  
      }

Value만 출력

foreach(string Value in scores.Value) {
        Console.WriteLine(Value);  
      }

기억 할 것 & 진행 사항

회의시간 5분전에 마이크켜고 대기하기, 코드 공유하기 수요일 계획 짜기, 내일까지 최대한 강의 수강하기

게임에 구현한다면?

금일 배운 List, Dictionary, Stack, Queue, HashSet등의 자료형태와 메서드의 오버로딩, 구조체를 사용하면 좀더 깔끔한 형태를 구현할 수 있을것 같다.

내일 할 일

C# 문법 종합반 3 ~ 5주차 수강하기

0개의 댓글