본문 바로가기

C#11

[C#] Task.FromResult 이해하기 ✍️ Task.FromResult await 키워드를 만나면 세 가지 경우의 수가 발생한다. 첫 번째, awaitable이 실행 과정에서 예외를 발생하면 exception을 던진다. awaitable 간단하게 Task 또는 Task를 반환하는 함수(+메서드)라고 생각하면 된다. +awaitable은 void도 반환하지만 Task를 반환하는 awaitable과는 결이 다르다고 한다. 자세한 내용은 링크를 참조하길 바랍니다. 두 번째, awaitable이 이미 완료된 Task라면 async 메서드를, 마치 일반 메서드처럼, 동기 방식으로 계속 실행한다. 세 번째, awaitable이 끝나지 않았다면 작업이 끝난 후 await 이후의 나머지 코드를 실행하도록 대기 작업으로 등록하고 async 메서드의 호출자에.. 2021. 12. 24.
[C#] C#은 모든 자료형이 객체일까? ❓ C#은 모든 자료형이 객체일까? 한 가지 의문으로부터 본 포스팅은 시작한다. 오늘 문득 생각에 잠겨 C#은 진짜 모든 자료형을 객체로 취급할까?라는 의문을 품고 직접 검증에 나섰다. 결론부터 말하면 모든 자료형을 객체로 취급한다는 말은 엄연히 틀리며 해석하기에 두 가지 답을 제시할 수 있다. ✍️ int는 객체인가? C#에서 모든 자료형은 객체인가를 알기 전에 int는 객체인가 대한 정답을 내리면 정답에 한걸음 다가갈 수 있지 않을까? 기본적으로 C#에선 class와 String(string)은 Reference-type이며 struct와 enum은 Value-type이다. 여기서 한 가지 중요한 사실은 int와 같은 원시 타입은 구조체로 구현했단 점이다. int는 구조체로 구현했다. 굉장히 많은 의.. 2021. 12. 15.
[C#] virtual, abstract, interface ✍️ virtual virtual의 가장 큰 특징은 선택적인 재정의(override)가 가능하는 것이다. virtual이 붙은 메서드와 속성, 인덱서는 재정의할 수 있지만 필수는 아니며 virtual 키워드가 포함된 클래스는 그 자체로도 완벽한 기능을 제공한다. class Animal { public virtual void Speak() { Console.WriteLine("I'm Creature"); } } class Dog : Animal { public override void Speak() { Console.WriteLine("I'm Dog!"); } } class Cat : Animal { } class Program { static void Main(string[] args) { Animal .. 2021. 12. 5.
[C#] 객체 생성 방법과 C++와 차이점 (+ reference) 인트로 C#은 C++와 객체 생성 방법이 다를까? C#은 포인터가 없을까? 본 포스팅에선 C#에서 객체를 생성하는 방법과 C++와 차이점 그리고 레퍼런스에 대해 알아보려 한다. 객체 생성 코드 class Orange { private int _price; public Orange(int price) { _price = price; } public int GetPrice() { return _price; } public void SetPrice(int price) { _price = price; } } class Program { static void Main(string[] args) { Orange orange = new Orange(100); Console.WriteLine($"오렌지 가격 : {or.. 2021. 9. 27.
[C#] 미로 만들기와 길 찾기 알고리즘 Part 3 : BFS 길 찾기 인트로 C# 콘솔 프로그래밍으로 미로를 만들고 BFS, A* 알고리즘으로 미로의 출구를 찾는 프로그램을 작성하려 한다. Part3에선 BFS, A* 길 찾기 알고리즘으로 미로의 출구를 찾으려 한다. 본 포스팅에선 BFS를 사용해 출구를 찾는다. BFS를 알고 싶다면? [Algorithm] BFS (Breadth First Search, 너비 우선 탐색) 알고리즘 [Algorithm] BFS (Breadth First Search, 너비 우선 탐색) 알고리즘 인트로 그래프의 탐색 알고리즘인 BFS(Breadth First Search, 너비 우선 탐색)를 구현해보려 한다. DFS와 다르게 BFS는 주로 한 가지 목적으로 사용된다. 그것은 가중치가 없는 그래프의 최단 경로를 구할 kangworld.tisto.. 2021. 8. 31.
[C#] 미로 만들기와 길찾기 알고리즘 Part 2 : Player 만들기 인트로 C# 콘솔 프로그래밍으로 미로를 만들고 BFS, A* 알고리즘으로 미로의 출구를 찾는 프로그램을 작성하려 한다. Part2에선 플레이어를 미로에 추가하려 한다. (+ Visual Studio 기준으로 포스팅을 이어나갈 예정입니다.) Player 클래스 추가 화면에 미로를 Render 하는 것은 Board의 기능이다. 그렇다면 Player 위치를 Board가 어떻게든 알고 있는 상태에서 Render시 플레이어 위치를 다른 색으로 표시하면 된다. 더보기 class Board { ... Player _player; ... public void InitializeBoard(int size, Player player) { ... _player = player; ... } } class Program { s.. 2021. 8. 30.
[C#] 미로 만들기와 길찾기 알고리즘 Part 1 : SideWinder 미로(3) 인트로 C# 콘솔 프로그래밍으로 미로를 만들고 BFS, A* 알고리즘으로 미로의 출구를 찾는 프로그램을 작성하려 한다. Part1에선 2차원 미로를 만들어보려 한다. (+ Visual Studio 기준으로 포스팅을 이어나갈 예정입니다.) [C#] 미로 만들기와 길찾기 알고리즘 Part 1 : 미로 만들기(1) [C#] 미로 만들기와 길찾기 알고리즘 Part 1 : 미로 만들기(2) [C#] 미로 만들기와 길찾기 알고리즘 Part 2 : Player 만들기 [C#] 미로 만들기와 길 찾기 알고리즘 Part 3 : BFS 길 찾기 SideWinder 미로 생성 알고리즘 미로를 만드는 것은 의외로 간단한데 Empty 지역의 동서남북을 Wall로 채우는 것부터 시작한다. Board 클래스의 InitializeB.. 2021. 8. 30.
[C#] 미로 만들기와 길찾기 알고리즘 Part 1 : 미로 만들기(2) 인트로 C# 콘솔 프로그래밍으로 미로를 만들고 BFS, 다익스트라, A* 알고리즘으로 미로의 출구를 찾는 프로그램을 작성하려 한다. Part1에선 2차원 미로를 만들어보려 한다. (+ Visual Studio 기준으로 포스팅을 이어나갈 예정입니다.) [C#] 미로 만들기와 길찾기 알고리즘 Part 1 : 미로 만들기(1) [C#] 미로 만들기와 길찾기 알고리즘 Part 1 : SideWinder 미로(3) [C#] 미로 만들기와 길찾기 알고리즘 Part 2 : Player 만들기 [C#] 미로 만들기와 길 찾기 알고리즘 Part 3 : BFS 길 찾기 Board를 2차원 배열로 관리하기 이전 포스팅에선 미로 맵을 데이터로 관리하지 않고 그저 이중 for문을 돌며 출력만 했다. 하지만 갈 수 있는 곳과 그.. 2021. 8. 29.
[C#] 미로 만들기와 길찾기 알고리즘 Part 1 : 미로 만들기(1) 인트로 C# 콘솔 프로그래밍으로 미로를 만들고 BFS, A* 알고리즘으로 미로의 출구를 찾는 프로그램을 작성하려 한다. Part1에선 2차원 미로를 만들어보려 한다. (+ Visual Studio 기준으로 포스팅을 이어나갈 예정입니다.) [C#] 미로 만들기와 길찾기 알고리즘 Part 1 : 미로 만들기(2) [C#] 미로 만들기와 길찾기 알고리즘 Part 1 : SideWinder 미로(3) [C#] 미로 만들기와 길찾기 알고리즘 Part 2 : Player 만들기 [C#] 미로 만들기와 길 찾기 알고리즘 Part 3 : BFS 길 찾기 프로젝트 만들기 Visual Studio -> 새 프로젝트 만들기 -> C# -> 콘솔 앱(.NET Core) -> 프로젝트 만들기 그럼 다음과 같이 Program의 .. 2021. 8. 28.
반응형