32. 델리게이트(delegate)의 기본 개념
·
💻 Programming Language/C#
델리게이트(Delegate) : 메소드를 다른 메소드로 전달할 수 있도록 하기 위해서 만들어 진 것. => 델리게이트를 이용해 포장하고 전달.(내가 이해한바로는 .. ㅇㅇ) void AAA(int arg1){ ... } int a = 123; AAA(a); class DemoClass { int id; string name; public int DisplayInfo() {..} } void AAA(DemoClass d){ ... } DemoClass d = new DemoClass(); AAA(d) 위의 코드들은 기존 인자를 통해 객체 혹은 값을 전달하는 방식 메소드를 전달하고 싶을땐 delegate를 사용 void AAA(Mydelegate Method){ ... } int StringToInt(str..
31. 예외필터(Exception Filter)
·
💻 Programming Language/C#
Exception Filter : catch절이 받아들일 예외 객체에 제약사항을 주고 그 사항에 만족하는 경우에 예외 처리를 실행할 수 있도록 하는 기능 catch문 뒤에 when 키워드를 이용. 사용자 정의 예외 클래스 모든 예외 객체는 System.Exception 클래스로부터 파생된다. 사용자 정의 예외 클래스를 만들때도 역시 System.Exception 클래스를 상속받아서 만든다. 사용 예제 코드 using System.Collections; namespace ExceptionEx { // 사용자 정의 예외 클래스 class UserException : Exception { public int ErrorCode { get; set; } } class Program { static void Mai..
30. C# 7.0에서 throw문 표현식, finally 절
·
💻 Programming Language/C#
C# 7.0에서의 throw문의 표현식(Expression) using System.Collections; //c# 7.0에서의 throw문의 표현식(Expression) namespace ExceptionEx { class Program { static void Main(string[] args) { try { int? aa = null; int bb = aa ?? throw new ArgumentNullException(); } catch (ArgumentNullException e) { Console.WriteLine(e.Message); } try { int[] arr = {1, 2, 3 }; int idx = 5; int value = arr[idx >= 0 && idx < 4 ? idx : t..
29. System.Exception클래스, throw문
·
💻 Programming Language/C#
System.Exception 클래스는 모든 Exception의 Base클래스이다. 모든 Exception들은 System.Exception 클래스를 상속받는다. 앞서 사용했던 IndexOutOfRangeException 예외 클래스도 System.Exception으로부터 파생된 것 System.Exception을 이용해서 모든 예외사항을 처리하지 않는 이유 개발자가 예상하지 못했던 예외를 처리할 수는 있지만, 처리하지 않아도 될 예외까지 모두 처리를 함으로써 오류가 발생할 수 있기 때문에 System.Exception을 사용하는 것은 신중하게 고려해야한다. throw문 형식 try { throw new Exception("예외를 던짐"); } catch(Exception e) { Console.Writ..
29-1. Null 병합 연산자(Null Operator)
·
💻 Programming Language/C#
? : Nullable 타입을 선언할 때 사용하는 연산자 ?? 널(Null) 병합 연산자 a ?? 100 에서 a 값이 null이면 100을 리턴하고, a가 null이 아니면 a의 본래값을 리턴한다. 값이 null이 되는 것을 막기위해 사용하는 듯하다. (개인적인 의견) namespace NullOperatorEx { class Program { static void Main(string[] args) { int? bb = null; Console.WriteLine($"{bb ?? 10}"); bb = 12; Console.WriteLine($"{bb ?? 10}"); string str1 = null; // string 타입은 nullable이 가능하기에 따로 nullable연산자(`?`)가 붙지 않아..
28. 예외처리(Exception Handling)
·
💻 Programming Language/C#
예외 처리 구문(try - catch) try{ // 실행코드 } catch(Exception 객체1){ // 어떤 예외가 발생했을때 처리 코드 } catch(Exception 객체2){ // catch문은 여러개가 올 수 있다. } ... Ex - 기존 예외 발생 코드 namespace ExceptionEx { class Program { static void Main(string[] args) { int[] array = {1,2,3,4,5}; for(int i = 0; i < 6; i++) { Console.WriteLine(array[i]); } Console.WriteLine("프로그램 종료!!"); } } } Output 1 2 3 4 5 Unhandled exception. System.In..
27. 제네릭 컬렉션
·
💻 Programming Language/C#
제네릭 컬렉션(Generic Collection)의 존재 및 사용 이유 Generic Collection : object 형식에 기반한 기존 컬렉션의 문제들을 해결하는 방법으로 사용되고 있다. Generic(일반화) 기반으로 만들어져 있기 때문에 컴파일시 사용할 형식이 정해지므로 형변환 발생이 줄어든다. 컬렉션이 가지고 있는 성능상의 문제를 해결할 수 있다. ⭐️⭐️⭐️기존 컬렉션이 가지고 있는 성능상의 문제 컬렉션은 데이터를 object형식으로 저장함. int, double, string과 같은 타입을 컬렉션에 저장하게되면 object형식으로 저장하고 컬렉션이 컴파일될때 이와 같이 형변환이 매번 일어나게됨. 또한 컴파일시 뿐만 아니라 컬렉션 내 요소(데이터)에 접근할 때에도 형변환이 계속해서 발생하기 ..