반응형 전체 글109 [C#] 링크(LINQ) LINQ란? LINQ(Language-INtegrated Query)의 약자인 LINQ는 데이터 질의(Query) 기능을 C#에서 사용할 수 있는 기술이ㅏㄷ. 쉽게 설명하자면 C#의 배열, 컬렉션, XML, DataSet 등 에서 내가 우너하는 데이터만 가져오고 싶은 경우 사용할 수 있는 기술이라고 할 수 있다. LINQ의 장단점을 알아보기 전에 LINQ가 무엇인지 다음 예제를 통해 간략하게 알아보자. 다음 예제는 배열에서 대문자 "A"로 시작하고 문자열의 길이가 3보다 큰 문자열을 LINQ로 추출한 뒤 콘솔에 출력한다. class Program { static void Main(string[] args) { string[] strArr = { "Apple", "Banana", "Car", "Angula.. 2023. 7. 13. [Effective C#] Item 50 예외 필터의 다른 활용 예를 살펴보라 예외필터를 통해 다양한 방법으로 여러가지 기능을 제공할 수 있다. 첫번째로 항상 false만을 반환하여 제한된 타입에 대해서만 로그를 출력할 수 있다. try { data = MakeWebRequest(); } catch (Exception e) when (ConsoleLogException(e)) { } catch (TimeoutException e) when (failures++ < 10) { WriteLine("Timeout error: trying again"); } public static bool ConsoleLogException(Exception e) { var oldColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleCol.. 2023. 6. 12. [Effective C#] Item 49 catch 후 예외를 다시 발생시키는 것보다 예외 필터가 낫다. 예외가 발생한 이후 catch 구문에서 어떠한 조건을 넣으려고 할 때 되도록 if 구문보다 아예 catch에서 when 키워드를 통해 조건을 거는 것이 좋다. var retryCount = 0; var dataString = default(String); while (dataString == null) { try { dataString = MakeWebRequest(); } catch (TimeoutException e) when (retryCount++ < 3) { WriteLine("Operation timed out. Trying again"); Task.Delay(1000 * retryCount); } } 만약 catch 문에서 조건을 걸었을 경우, try 구문에서 있었던 정보들이 사라지거나 클로.. 2023. 6. 12. [Effective C#] Item48 강력한 예외 보증을 준수하는 것이 좋다. 1. 예외에 대한 보증 3가지 1) 기본 보증(basic guarantee) 특정 함수 내에서 발생한 예외가 이 함수를 빠져나오더라도 어떤 리소스도 누수되지 않으며, 모든 객체의 상태가 유효한 상태를 유지함을 의미 .NET CLR은 기본 보증을 준수한다. 2) 강력한 보증(sttong guarantee) 기본 보증에 더하여 예외 발생 시에도 프로그램의 상태가 변겨오디지 않음을 추가로 보증함 LINQ 쿼리를 사용하면 기본적으로 강력한 예외 보증 요건을 준수하게 된다. 함수형 프로그래밍 스타일을 사용할 수 없는 경우 방어적인 프로그램을 위해 기존 데이터의 복사본을 유지하고 작업이 완료된 후 값을 교환하는 방법을 사용하면 된다. (이러한 지침은 변경 불가능한 데이터 구조를 사용한느 것이 좋다) 3) 예외 없음.. 2023. 6. 12. 이전 1 ··· 4 5 6 7 8 9 10 ··· 28 다음 반응형