C# 기초 33

[C# 기초] 람다란?

람다란람다는 익명함수를 간결하게 표현하는 방식이다.(여기서 익명함수는 이름이 없는 함수를 말한다. 보통 한 번만 쓰고 말 함수라서 이름을 지을 필요가 없을 때 사용되는 함수들이다.) 즉, 짧고 간단한 함수들을 만들 때 사용되며,주로 델리게이트, LINQ, 이벤트 헨들러 등에 활용된다.(델리   예제using System;class Program{ static void Main() { Func square = x => x * x; Console.WriteLine(square(5)); // 25 출력 }} 위 코드를 분석해보면,Func 는 정수를 입력받아 정수를 반환하는 델리게이트이다.해당 델리게이트 변수 square는 " x => x * x" 즉, x 를 입력받아 ..

C# 기초 2025.02.19

[C# 기초] Dictionary에서 Add()와 [] 차이

class Program{ static void Main() { Dictionary age = new Dictionary(); age.Add("john", 20); age["john", 20]; }}Dictionary에서 Add() 와 [ ] 의 차이둘다 Dictionary에 값을 추가 하거나 수정하는 데 사용되지만, 동작방식이 다르다.  Add()의 경우Add()의 경우에는 새로운 키-값 쌍을 추가하는 메서드다.만약에 같은 키가 존재하면, 예외가 발생한다.따라서 이미 있는 키를 덮어쓰지 않고, 새로운 값만 추가할 때 사용한다. [ ] 의 경우[ ] 의 경우엔, 만약 키가 없는 경우에는 자동으로 추가되기 때문에, Add()와 동일하다.하지..

C# 기초 2025.02.09

[C# 기초] Dictionary 를 활용한 퀘스트 생성 및 진척도 관리

문제점퀘스트를 생성할 때 고려해야 할 것이,어떤 퀘스트를 할 것인지,그 퀘스트의 미션이 뭔지,보상이 뭔지,현재 어느 정도 진행이 되었는지를확인해야 하고,이를 전부 각각 다르게 관리해주어야 한다. 해결나는 이를 Dictionary를 사용하여 관리했다. public static void AcceptQuest(string questName, object goal, object nowProgressed){ History.Instance.StartQuest(questName, goal, nowProgressed); Console.WriteLine($"\"{questName}\" 퀘스트를 수락했습니다!");} 위 메서드는 퀘스트를 수락했을 때 실행되는 메서드다. private History(){ Q..

C# 기초 2025.02.07

문자열을 char타입의 리스트에 한 글자 씩 바로 추가하는 법

foreach (char c in guess){ guessChar.Add(c); // 🚨 리스트에 다시 추가하는 불필요한 작업} 이런 식으로 guess 라는 문자열을char 타입으로 되어 있는 리스트에 한 글자 씩 추가하는 메서드 대신에 List guessChar = new List(guess); // 바로 리스트로 변환 이렇게 리스트로 바로 변환하는 코드를 짜서 더 짧고 간편하게 할 수 있음.

C# 기초 2025.02.06

[C# 기초] 14강. Big O 표기법

Big O 표기법이란?Big O 표기법은 코드가 얼마나 빠르고, 메모리를 적게 사용하는지.즉, 코드의 효율성을 나타내는 지표다. Big O (1) [빅 오 원]void SayHello() { Console.WriteLine("안녕!");} 위 함수는 "안녕"이라는 문자를 한 번 출력한다.void SayHello() { Console.WriteLine("안녕!"); Console.WriteLine("안녕!"); Console.WriteLine("안녕!"); Console.WriteLine("안녕!"); Console.WriteLine("안녕!");} 아무리 많이 있어도,각 Console.WriteLine 마다 한 번 씩만 실행되어,딱 5번만 출력된다. 이렇게 항상 한 번만 ..

C# 기초 2025.02.05

[C# 기초] 13강. 예외 처리 및 값형과 참조형

예외예외는 말 그대로 프로그래 실행 중에 예기치 못한 오류가 발생하는 것을 뜻한다.C#에서는 첫 번째로 try-catch블록을 사용하여 예외를 처리할 수 있다. try-catch블록try-catch블록의 기본 구조우선 기본 구조부터 살펴보자.try{ // 예외가 발생할 가능성이 있는 코드}catch (Exception e){ // 예외 발생 시 실행할 코드} 위 코드에서 보이는 것처럼try 블록 안의 코드에서 예외가 발생하면,catch 블록으로 이동하여 예뢰를 처리하고,예외가 발생하지 않으면 catch는 실행이 안되는 형태다. 예제 코드class Program{ static void Main() { try { int a = 10, b = ..

C# 기초 2025.02.03

[C# 기초] 12강. 인터페이스와 열거형

인터페이스를 이해하기 전에 다중 상속을 먼저 알아보자.먼저 예를 들어A라는 부모클래스가B, C라는 자식 클래스에게 상속을 해주었다.그런데 여기서B와 C클래스가 부모로써 D라는 자식 클래스에게 상속을 해주었다.그럴 경우에 D클래스가 불려 받은 멤버는 어떻게 될까?이렇게 상속이 여러번되고 여러 클래스로 나뉘고, 합쳐진 멤버들을 정리하기는 확실히 어렵다.따라서 C#에서는 이런 다중 상속을 지원하지 않고 있다. 이런 다중 상속을 가능하게 도와주는 것이 인터페이스라고 할 수 있다. 인터페이스(Interface)정의인터페이스는 직역하면, "접속하다" 정도가 된다.말 그대로 다른 여러 클래스를 연결해주는 기능으로 봐도 무방할 것이다. 인터페이스는 클래스나 메서드에서 구현해야 할 메서드나 속성 등을 정의하는 틀로만 사..

C# 기초 2025.02.03

[C# 기초] 11강. 제너릭과 out, ref키워드

제너릭정의제너릭은 "포괄적인"이라는 뜻으로 고급 문법에 해당하는데,정의 먼저 하자면,자료형(Type)에 의존하지 않는 코드를 작성할 수 있도록 해주는 기능이다.즉, 다양한 데이터 타입을 처리할 수 있는 재사용 가능한 코드를 만들 수 있다.  코드 예시class Animal{ public string Name { get; set; } public int Age { get; set; }}class Program{ static void Main(string[] args) { Animal animal = new Animal(); animal.Name = "Coco"; animal.Age = 10; }} 이것은 일반적인 자동프로퍼티를 사용한 코드이다..

C# 기초 2025.02.03

[C# 기초] 10강. 상속과 다형성

상속상속은 보통 부모가 자식에게 재산을 물려줄 때 사용하는 말인데,클래스에서도 사용되는 상속도 같은 내용이다.다음 예시를 보자. public class Animal // 부모 클래스{ public string Name { get; set; } public int Age { get; set; } public void Eat() { Console.WriteLine("Animal is eating"); } public void Sleep() { Console.WriteLine("Animal is sleeping"); }}public class Dog : Animal // 상속 받는 자식 클래스{ public string type { g..

C# 기초 2025.02.03