본문 바로가기

프로그래밍/C#101

C# 변수 캡처(Capture)에 대해서 람다 변수 캡처(Capture) 람다를 다루다 보면 변수를 캡처하는 상황을 맞이하게 될 것이다. using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List actions = new List(); for (int i = 0; i Console.WriteLine(i)); } foreach (var a in actions) { a.Invoke(); } // 기대하던 출력: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 // 실제 출력: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 } } 위의 코드를 작.. 2024. 1. 23.
C# 볼링 점수 계산기(Bowling Score Calculator) 볼링 점수 계산 생각보다 볼링 점수 계산기를 코드로 짜보려니 예상치 못한 문제들이 많았다. 스트라이크 이후에 공 2개의 점수를 보너스로 받는다. 스페어 이후에 공 1개의 점수를 보너스로 받는다. 10 프레임에서 달성한 스트라이크, 스페어에 대해서는 보너스를 받지 못한다. 10 프레임에서 스트라이크, 스페어를 달성하면 1번 더 공을 던질 수 있다. 볼링 점수 계산 사이트 Bowling Score Calculator THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PA.. 2024. 1. 19.
C# 문자열 정렬하기 문자열 정렬하기 알고리즘을 풀 거나한 몇몇 상황에서 문자열 정렬이 필요한데, 알아두면 유용하게 사용이 가능하다. 최근 알고리즘 문제에서 문자열 정렬만 하면 되는데 갑자기 버블 정렬을 하고 있는 나를 발견할 수 있었다. 우선 문자열을 정렬하기 위해서는 각각의 문자로 분리하여야 한다. char의 배열로 변환한 후에 정렬해준다. public static class StringExtensions { public static string Sort(this String input) { char[] chars = input.ToCharArray(); Array.Sort(chars); return new string(chars); } public static string SortDesc(this String input.. 2024. 1. 15.
C# Call by value와 Call by reference에 대해서 먼저 읽고 오면 좋은 글 C# Value Type vs Reference Type 값 타입(Value Type) 스택 메모리에 저장 데이터를 직접 가지고 있음 기본 타입들 대부분이 값 타입 (Booleans, Characters, DateTime, TimeSpan, 구조체) 값 타입 변수를 복사하면 완전히 새로운 변수가 생기고 jettstream.tistory.com Call by value 우리는 함수를 호출할 때 함수에 인자로 넣어서 함수를 실행시킨다. 이때, 인자로 넘겨지는 객체는 그 자체가 전달되는 것이 아니라 복사되어서 넘어간다. public void main() { int x = 3; Foo(x); Console.WriteLine(x); // 3 } public void Foo(int y) {.. 2024. 1. 12.
C# String은 참조 타입(Reference type)이면서 불변(Immutable)하다. string vs StringBuilder 예를 들어, int의 경우를 살펴보자. int는 값 타입(value type)이면서 가변(mutable)이다. 값 타입은 데이터 변경 시에 새로운 메모리 할당이 일어나지 않는다. 이미 생성된 메모리의 데이터가 변경된다. static void Main(string[] args) { int a = 100; int b = a; a = 300; Console.WriteLine($"a : {a}"); // 300 Console.WriteLine($"b : {b}"); // 100 } string의 경우를 살펴보자. string은 참조 타입(reference type)이면서 불변(immutable)이다. static void Main(string[] args) { stri.. 2024. 1. 10.
BitConverter.ToInt16 메서드에 대해서 ToInt16 메서드 public static short ToInt16 (byte[] value, int startIndex); byte[] 배열에 시작 index를 지정하면 16bit, 2byte, Int16의 크기만큼 데이터를 short 형식으로 변환한다. (two byte array elements to a short) 예제 코드 // Example of the BitConverter.ToInt16 method. using System; class BytesToInt16Demo { const string formatter = "{0,5}{1,17}{2,10}"; // Convert two byte array elements to a short and display it. public static v.. 2024. 1. 8.