C#190 [C#]LINQ 질의 구문과 메서드 구문 LINQ를 사용하여 원하는 데이터를 추출하기 위해 질의(Query)를 작성하는 방법은 질의 구문(Query Syntax)과 메서드 구문(Method Syntax)이 존재합니다. 질의 구문과 메서드 구문은 동일한 작업을 수행하지만 소스 코드를 작성하는 방법은 다릅니다. 쿼리 구문은 DataBase의 Query문과 비슷하고 메서드 구문은 C#의 문법과 매우 유사합니다. 즉, DataBase에서 Query문을 작성해보지 않은 개발자는 쿼리 구문보다 메서드 구문이 익숙할 것이며, Query문을 작성해본 개발자는 쿼리 구문이 익숙할 수 있습니다. 질의 구문(Query Syntax) 질의 구문은 LINQ를 소개하는 포스팅에서 설명했듯이 from 키워드로 시작해서 select 키워드로 끝납니다. 질의 구문에서 사용되.. C#/LINQ 2022. 7. 10. [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", .. C#/LINQ 2022. 7. 9. [C#]내부 예외 처리(Inner Exception) 내부 예외(Inner Exception) C#의 Exception 클래스의 InnerException은 예외 클래스의 프로퍼티입니다. InnerException 프로퍼티는 현재 예외를 발생시킨 예외를 반환합니다. InnerException 프로퍼티에 대해 설명이 부족한 이유는 글로 설명하면, 오히려 이해가 안 될 수 있으므로 다음 예제를 통해 InnerException 프로퍼티가 어떻게 동작하는지 설명합니다. 중첩된 try~catch문 InnerException 프로퍼티를 설명하기 전에 중첩된 try~catch문에 대해 알아봅시다. 예외를 처리하는 try~catch문은 중첩될 수 있습니다. 다음 코드처럼 try문 내부에 또 다른 try~catch문이 존재할 수 있다는 의미입니다. try // 외부 try.. C# 2022. 6. 26. [C#]throw문, 사용자 정의 예외 C#의 예외 유형 C#에서 예외는 다음과 같이 두 가지 유형으로 분류됩니다. 1. 시스템 예외(System exception) 2. 애플리케이션 예외(Application exception) 시스템 예외 시스템 예외란 프로그램 실행 중 사전에 정의된 조건에 인해 예외 관리자가 암시적으로 발생시키는 것을 말합니다. 예를 들어, 배열의 범위를 벗어나는 IndexOutOfRangeException, null로 초기화된 객체를 접근하는 NullReferenceException, DataBase에서 에러가 발생하는 SQLException 등 BCL(Base Class Libraries)에 정의된 예외를 말합니다. 애플리케이션 예외 어플리케이션애플리케이션 예외는 프로그래머가 작성한 소스코드를 기반으로 프로그램에서 .. C# 2022. 6. 26. [C#]finally 키워드, finally문 finally 키워드 finally 키워드는 try문에서 예외 발생 여부 관계없이 그리고 catch문에서 예외 처리 여부 상관없이 finally문 블록 안에 작성한 소스코드를 실행합니다. 즉, 예외 여부 상관없이 항상 실행됩니다. finally 키워드 구문 finally문은 두 가지 방법으로 작성할 수 있습니다. 첫 번째 방법은 try-catch-finally입니다. 다음 구문은 try문에서 예외가 발생하고 catch문에서 예외 처리 후 finally문을 실행합니다. try { // 예외가 발생할 수 있는 소스코드를 작성합니다. } catch (Exception e) { // 예외를 처리하는 소스코드를 작성합니다. } finally { // 예외 발생 여부와 상관없이 항상 실행되는 소스코드를 작성합니다... C# 2022. 6. 26. [C#]다중 catch문, 다중 예외 처리 이번 포스팅은 C#에서 다중 catch문을 구현하는 방법을 소개합니다. 다중 catch문 구현 방법 C#에서는 try문에 대해 여러 catch문을 작성할 수 있습니다. 예외는 동시에 발생하지 않으므로 여러 catch문을 작성하면 예외를 처리하는 하나의 catch문만 실행되고 나머지 catch문은 실행되지 않습니다. 다음 예제는 try문에 대해 여러 catch문을 구현하였습니다. 첫 번째 catch문은 DivideByZeroException 클래스를 매개변수로 사용하고 두 번째 catch문은 FormatException 클래스를 매개변수로 사용합니다. class Program { static void Main(string[] args) { int a, b, c; try { a = int.Parse(Cons.. C# 2022. 6. 26. [C#]예외 처리(Exception Handling) C#의 에러 종류 .NET Framework에서 소스코드를 작성하고 프로그램을 실행할 때, 컴파일 에러 또는 런타임 에러가 발생할 수 있습니다. 컴파일 에러 소스코드를 컴파일 시 발생하는 에러를 컴파일 에러 또는 컴파일 타임 에러라고 말합니다. 컴파일 에러는 주로 구문 오류로 발생합니다. 큰 따옴표 및 세미콜론을 누락하거나, 변수에 타입과 다른 값을 할당하거나, 키워드 철자를 잘못 입력하거나, 추상 클래스 및 인터페이스에 대한 객체를 생성하려고 시도하는 등 다양한 이유로 컴파일 에러가 발생합니다. 컴파일 에러는 프로그램이 만들어지기 전에 발생하며, Visual Studio와 같은 개발 툴에서 에러 내용을 확인할 수 있으므로 프로그램 실행 전에 수정할 수 있습니다. 런타임 에러 프로그램 실행 시 발생하는 .. C# 2022. 6. 26. [C#]타입 변환 및 타입 캐스팅(Type Conversion and Type Casting) 타입 변환 및 타입 캐스팅 타입 변환 또는 타입 캐스팅은 데이터 타입을 다른 데이터 타입으로 변경하는 작업이라고 말할 수 있습니다. 타입 변환은 두 데이터 타입이 서로 호환될 경우에만 가능하며, 호환되지 않은 경우 InvalidCastException 예외가 발생합니다. 변수는 선언 후 다른 데이터 타입으로 다시 선언할 수 없습니다. 따라서 변수의 타입과 다른 타입의 값을 변수에 할당할 수 없습니다. 예를 들어 다음 예제를 살펴봅시다. C#에서 int 타입으로 선언된 변수는 정수형 값만 가질 수 있습니다. 문자열 값은 int 타입에 호환되는 값이 아니므로 다음과 같이 오류가 발생합니다. class Program { static void Main(string[] args) { int num = 10; nu.. C# 2022. 6. 21. [C#]스레드 Join 메서드(Join Method of Thread) Join() 메서드의 필요성 Join() 메서드의 필요성을 이해하기 위해 다음 예제를 살펴봅시다. 다음 예제는 Main() 문에서 세 개의 스레드 객체를 실행합니다. class Program { public static void ThreadMethod001() { Console.WriteLine("ThreadMethod001() 메서드 호출"); Thread.Sleep(5000); Console.WriteLine("ThreadMethod001() 메서드 종료"); } public static void ThreadMethod002() { Console.WriteLine("ThreadMethod002() 메서드 호출"); Thread.Sleep(3000); Console.WriteLine("ThreadMet.. C# 2022. 6. 15. [C#]스레드 상태 확인 IsAlive 프로퍼티 IsAlive 프로퍼티는 현재 스레드의 실행 상태를 불리언 값으로 반환합니다. 스레드가 시작되었고 종료되거나 중단되지 않은 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다. 즉, 스레드가 실행 중이면 true, 그렇지 않으면 false입니다. ThreadState 프로퍼티 ThreadState 프로퍼티를 사용하여 현재 스레드의 실행 상태를 확인할 수 있습니다. 불리언 값을 반환하는 IsAlive 프로퍼티와 달리 ThreadState프로퍼티는 ThreadState 열거형을 반환합니다. 따라서, ThreadState를 사용하기 전에 C#의 스레드 생명주기를 이해할 필요가 있습니다.(프로그래밍 언어마다 스레드 생명주기가 다릅니다.) 이번 포스팅에서는 간략한 Thread.. C# 2022. 6. 6. [C#]파일 존재 여부 확인 Exists() 메서드 C#에서 파일이 존재하는지 확인할 수 있는 몇 가지 방법이 존재합니다. 그중 가장 많이 사용하는 방법으로 System.IO 네임스페이스에 존재하는 File 클래스의 Exists() 메서드를 사용하는 것입니다. if(File.Exists(file_path)) { // 파일이 존재하는 경우 } else { // 파일이 존재하지 않는 경우 } Exists() 메서드는 string 타입의 파일 경로를 매개 변수로 사용합니다. 파일이 존재하면 true를 반환하고 파일이 없거나 접근할 수 있는 권한이 없으면 false를 반환합니다. 경로가 유효하지 않거나 null 및 문자열 길이가 0인 경우에도 false를 반환합니다. Exists() 메서드 예제 다음은 Exists() 메서드 예제에서 사용.. C# 2022. 6. 6. [C#]base 키워드 base 키워드 파생 클래스(혹은 자식 클래스)에서 기본 클래스(혹은 부모 클래스)의 생성자, 필드, 메서드를 접근해야 하는 경우 base 키워드를 사용하여 접근할 수 있습니다. base 키워드는 메서드, 프로퍼티, 생성자 내에서만 사용할 수 있으며, static으로 선언된 정적 메서드에서는 사용할 수 없습니다. base 키워드는 기본 클래스와 파생 클래스에 동일한 이름의 필드가 존재하는 경우 유용하게 사용할 수 있습니다. base 키워드의 유용성 기본 클래스와 파생 클래스에 동일한 이름의 필드가 존재하는 경우 기본 클래스의 필드를 접근하는지 파생 클래스의 필드를 접근하는지 구분할 수 있습니다. 부모 클래스에서 작성한 소스코드를 복제할 필요가 없습니다. 기본 클래스의 필드 및 메서드 접근 다음 예제는 파.. C# 2022. 6. 5. 이전 1 ··· 5 6 7 8 9 10 11 ··· 16 다음