프로그래밍/C#

    [C#] 예외를 처리하는 방법 (catch, Exception, rethrow)

    [C#] 예외를 처리하는 방법 (catch, Exception, rethrow)

    1. try ~ catch using System; using System.Net; class Program { static void Main() { WebClient wc = new Webclient(); string s = wc.DownloadString("http://www.naver.com"); Console.WriteLine(s); } } 웹클라이언트 객체를 만들어 주소의 소스를 받는 코드이다. 위 코드는 문제없이 네이버의 코드를 불러오는데 실수로 주소를 다르게 입력하거나 입력하지 않는다면 예외가 일어난다. 이러한 예외 처리는 어떻게 해야할까? 문제가 일어나는 부분의 메소드를 우클릭 후 정의로 이동해보면 알 수 있다. 정의로 이동 후 왼쪽 +버튼을 눌러 펼처보면 친절하게 예외에 대한 설명이 있다..

    [C#] 예외 처리

    [C#] 예외 처리

    0. 개요 using System; public static class FileManager { public static int CopyFile(string srcFileName, string dstFileName) { // ... return 100; } } class Program { static void Main() { FileManager.CopyFile("C:\\a.txt", "D:\\b.txt"); } } 위와 같이 파일 이름을 인자로 받아 앞의 인자의 내용을 뒤의 인자로 복사하는 코드가 있다고 해보자. 복사를 하면 복사한 양을 리턴해주게끔까지 해놓았다. 그런데 이러한 코드가 항상 성공한다는 보장이 없다. 사용자가 이름을 실수할 수도 있고, 접근 권한이 없을 수도 있는 등 실패할 가능성도 있다..

    [C#] 람다 표현식 (Lambda Expression)

    [C#] 람다 표현식 (Lambda Expression)

    1. 핵심 정리 using System; class Program { public static void foo(Func f) { int s = f(1, 2); Console.WriteLine(s); } static void Main(string[] args) { foo( ? ); } } Main에서 foo함수의 인자로 메소드를 받는데 메소드의 이름이 아닌 구현부를 넣을 수 있다. 이름을 제외한 인자~구현부까지 넣으면 되는데 형태는 아래와 같다. using System; class Program { public static void foo(Func f) { int s = f(1, 2); Console.WriteLine(s); } static void Main(string[] args) { foo(Add);..

    [C#] Action, Func

    [C#] Action, Func

    1. Action using System; class Program { public static void Foo1(int arg1) { } public static void Foo2(int arg1, int arg2) { } static void Main() { ? f1 = Foo1; ? f2 = Foo2; } } Main에서 Foo1, Foo2 메소드의 정보를 담고 싶다. 그렇다면 앞선 내용대로 delegate를 사용하면 된다. using System; delegate void Foo1(int arg1); delegate void Foo2(int arg1, int arg2); class Program { public static void Foo1(int arg1) { } public static voi..

    [C#] event

    [C#] event

    1. 개요 using System; delegate void HANDLER(); class Button { public HANDLER handler = null; public void press() { handler(); } } class Program { static void Main() { Button btn = new Button(); btn.press(); } public static void F1() { Console.WriteLine("F1"); } public static void F2() { Console.WriteLine("F2"); } } 위와 같은 코드가 있다고 생각을 해보자. Button클래스는 실제 GUI에서 사용할 버튼이라고 생각하고 Main에서 Button객체를 만들고 pres..

    [C#] Delegate Chain

    [C#] Delegate Chain

    1. Delegate Combine using System; class Test { public static int Method1() { Console.WriteLine("Method1"); return 1; } public static int Method2() { Console.WriteLine("Method2"); return 2; } public static int Method3() { Console.WriteLine("Method3"); return 3; } public static int Method4() { Console.WriteLine("Method4"); return 4; } } delegate int FUNC(); class Program { public static void Main(..