프로그래밍

    [C#] Dispose() 메소드

    [C#] Dispose() 메소드

    1. 핵심 정리 using System; using System.IO; class Program { static void Main() { int[] arr = new int[] {1, 2, 3, 4, 5}; FileStream fs = new FileStream("a.txt", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None); // ... fs.Dispose(); } } C와 C++은 위와 같이 new를 통해 자원을 할당하면 반드시 자원을 반납해야 한다. C#은 자동으로 메모리 관리를 해주기 때문에 new로 자원을 할당해도 반납하지 않아도 된다. 하지만 C#에서도 파일 같은 것을 오픈하면 Dispose를 통해 반납을 해주어야 한다. 왜 Dispose..

    [C#] Task 클래스

    [C#] Task 클래스

    1. 핵심 정리 using System; using System.Threading; using system.Threading.Tasks; class Program { public static void Foo() { Console.WriteLine($"Foo : {Thread.CurrentThread.ManagedThreadID}"); Thread.Sleep(3000); } public static void Main() { Thread t = new Thread(Program.Foo); t.Start(); Task t = Task.Run(Program.Foo); Console.ReadKey(); } } 스레드를 만들어 사용하는 코드이다. 위의 코드에서 12~13번 라인의 코드와 15번 라인의 코드는 동일한..

    [C#] 단어 퍼즐

    [C#] 단어 퍼즐

    문제 설명 단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na”, “n”, “a”]인 경우 ba, na, n, a 단어 조각이 각각 무한개씩 있습니다. 이때, 만들어야 하는 문장이 “banana”라면 “ba”, “na”, “n”, “a”의 4개를 사용하여 문장을 완성할 수 있지만, “ba”, “na”, “na”의 3개만을 사용해도 “banana”를 완성할 수 있습니다. 사용 가능한 단어 조각들을 담고 있는 배열 strs와 완성해야 하는 문자열 t가 매개변수로 주어질 때, 주어진 문장을 완성하기 위해 사용해야 하는 단어조각 개수의 최솟값을 return 하도록 sol..

    [C#] 스레드 클래스 멤버

    [C#] 스레드 클래스 멤버

    1. Thread 클래스 멤버 using System; using System.Threading; class Program { public static void F1() { Console.WriteLine("F1 Start"); Thread.Sleep(1000); Console.WriteLine("F1 End"); } public static void Main() { Thread t1 = new Tread(F1); t1.Start(); Console.WriteLine($"{t1.ManagedThreadID}"); Console.WriteLine($"{t1.Priority}"); Console.WriteLine($"{t1.IsThreadPoolThread}"); Console.WriteLine($"{t1...

    [C#] 스레드 개념 (Thread)

    [C#] 스레드 개념 (Thread)

    1. 사전 개념 using System; using System.Threading; class Program { public static void Foo() { Console.WriteLine("Foo Start"); Thread.Sleep(10000); Console.WriteLine("Foo End"); } public static void Main() { Foo(); } } 위의 그림과 같이 컴퓨터에는 HDD / SSD와 같은 저장장치와 MEMORY가 있다. 보통 저장장치에 확장자 exe와 같은 것들이 있는데 이러한 것을 통들어 프로그램이라 부른다. 그리고 프로그램을 실행시키게 되면 컴퓨터가 프로그램을 실행시키기 위해 메모리에 올리게 된다. 이렇게 메모리에 올라와 있는 상태를 프로세스라고 한다. 모..

    [C#] Fluent vs Query (LINQ Fluent vs Query Syntax)

    [C#] Fluent vs Query (LINQ Fluent vs Query Syntax)

    1. 핵심 정리 using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { string[] arr = {"kim", "shin", "lee", "park", "choi"}; // Fluent Syntax var e = arr.Where(s => s.Contains("i")) .OrderBy(s => s.Length) .Select(s => s.ToUpper()); foreach(var n in e) Console.WriteLine(n); } } 문자열이 5개 들어있는 배열이 있다. 해당 배열에서 LINQ를 이용해서 필터링 후 요소를 꺼내보려고 한다. 먼저 Where을 통해 문자열..