-
예외 처리문 (try-catch)
try-catch 문은 뒤에 하나 이상의catch절을 수반하는try블록으로 구성됩니다. 각catch절은 서로 다른 예외의 처리기를 지정합니다. 다음과 같은 형식 중 하나를 사용합니다. trytry-blockcatch (exception-declaration-1)catch-block-1catch (exception-declaration-2)catch-block-2…trytry-blockcatchcatch-block 다음은 각 문자에 대한 설명입니다.try-block : 예외가 발생할 수 있는 코드 세그먼트를 포함합니다.exception-declaration, exception-declaration-1, exception-declaration-2 : 예외 개체 선언입니다.catch-block, catch-block-1, catch-block-2 : 예외 처리기를 포함합니다. try-block은 예외가 발생할 수 있는 보호된 코드 블록을 포함합니다. 이 블록은 예외가 throw되거나 […]
-
예외 처리문 (try-finally)
finally블록은try블록에서 할당된 리소스를 정리할 때 유용합니다. try 블록이 종료되는 방법에 관계 없이 항상 제어가 finally 블록으로 전달됩니다. 이 문은 다음 형식을 사용합니다. trytry-blockfinallyfinally-block 다음은 각 문자에 대한 설명입니다.try-block : 예외가 발생할 수 있는 코드 세그먼트를 포함합니다.finally-block : 예외 처리기와 정리 코드를 포함합니다. 설명catch가 문 블록에서 발생하는 예외를 처리하는 반면finally는 선행하는try블록의 종료 방법에 관계 없이 코드의 문 블록이 반드시 […]
-
예외 처리문 (throw)
throw문은 프로그램 실행 중에 비정상적인 상황(예외)이 발생한 경우 이를 알리는 데 사용됩니다. 다음 형식을 사용합니다. throw[expression];expression 예외 개체입니다.catch절에서 현재 예외 개체를 다시 throw할 경우에는 생략할 수 있습니다. 아래 예제에서 볼 수 있는 것처럼 throw된 예외는System.Exception에서 파생된 클래스의 개체입니다.class MyException : System.Exception {}throw new MyException(); 대개throw문은 try-catch 문이나 try-finally 문과 함께 사용됩니다. 예외가 throw될 경우 프로그램에서는 해당 예외를 처리하는catch문을 […]
-
인덱서
C# 클래스가 인덱서를 선언하여 클래스에 대한 배열형 액세스를 제공하는 방법을 보여 줍니다. 설명인덱서를 정의하면 "가상 배열"처럼 동작하는 클래스를 만들 수 있습니다. 해당 클래스의 인스턴스는[]배열 액세스 연산자를 사용하여 액세스할 수 있습니다. C#에서 인덱서를 정의하는 것은 C++에서[]연산자를 정의하는 것과 유사하지만 훨씬 더 융통성이 있습니다. 배열형이나 컬렉션형 기능을 캡슐화하는 클래스에 대해 인덱서를 사용하면 해당 클래스의 사용자가 배열 구문을 사용하여 […]
-
구조체
구조체의 구문 및 사용법을 제공하며 클래스와 구조체 간의 중요한 차이점에 대해서도 설명합니다. 첫째 예제에서는 구조체를 선언하고 사용하는 방법을 보여 주며, 둘째 예제에서는 인스턴스를 메서드로 전달할 때 구조체 및 클래스 간의 차이점에 대해 설명합니다. 또한 다음과 같은 항목에 대해 설명합니다.구조체 대 클래스힙 또는 스택?생성자 및 상속구조체의 특성예제 1다음 예제에서는 세 가지 멤버, 즉 속성, 메서드 및 전용 […]
-
예외 처리문 (try-catch-finally)
일반적으로catch와finally를 함께 사용하여try블록에서 리소스를 가져와 사용하고catch블록에서 예외 상황을 처리한 다음finally블록에서 리소스를 해제합니다. 예제// try-catch-finallyusing System;public class EHClass{ public static void Main () { try { Console.WriteLine("Executing the try statement."); throw new NullReferenceException(); } catch(NullReferenceException e) { Console.WriteLine("{0} Caught exception #1.", e); } catch { Console.WriteLine("Caught exception #2."); } finally { Console.WriteLine("Executing finally block."); } }} 출력Executing the […]
-
이벤트 (Event)
C#에서 이벤트를 선언, 호출 및 연결하는 방법을 보여 줍니다. 설명C#에서 이벤트는 개체에 어떤 일이 발생하면 클래스에서 해당 클래스의 클라이언트에게 알리는 방법입니다. 이벤트는 그래픽 사용자 인터페이스에서 가장 흔히 사용됩니다. 일반적으로, 인터페이스의 컨트롤을 나타내는 클래스에는 이벤트가 있어서 사용자가 단추를 클릭하는 것과 같이 컨트롤에 임의의 작업을 했을 때 알림을 받습니다.그러나 이벤트를 그래픽 인터페이스에만 사용할 필요는 없습니다. 이벤트는 개체가 해당 […]
-
대리자 (delegate)
대리자 형식에 대해 설명하며, 대리자를 정적 메서드와 인스턴스 메서드로 매핑하는 방법과 두 메서드를 결합하는 방법(멀티캐스트)을 보여 줍니다. 설명C#에서 대리자는 C나 C++에서의 함수 포인터와 유사합니다. 대리자를 사용하면 프로그래머가 대리자 개체 안에서 메서드 참조를 캡슐화할 수 있습니다. 그렇게 하면 메서드를 호출할 컴파일 타임을 몰라도 참조된 메서드를 호출할 수 있는 코드로 대리자 개체를 전달할 수 있습니다. 그러나 C나 C++의 […]
-
연산자 오버로딩
사용자 정의 클래스가 연산자를 오버로드하는 방법에 대해 설명합니다. 설명연산자 오버로딩을 사용하면 피연산자 하나 또는 둘 모두가 사용자 정의 클래스 또는 구조체 형식인 연산에 대해 사용자 정의 연산자 구현을 지정할 수 있습니다. 자습서에는 두 개의 예제가 있습니다. 첫째 예제에서는 연산자 오버로딩을 사용하여 복잡한 더하기를 정의하는 복잡한 수 클래스를 만드는 방법을 보여 주고, 둘째 예제에서는 연산자 오버로딩을 사용하여 […]
-
클래스 정적 생성자
정적 생성자는 클래스를 초기화하는 데 사용됩니다. 이 생성자는 첫 번째 인스턴스가 만들어지기 전이나 정적 멤버가 참조되기 전에 클래스를 초기화하기 위해 자동으로 호출됩니다. 이것은 다음 형식으로 선언됩니다.[attributes]staticidentifier(){constructor-body}다음은 각 문자에 대한 설명입니다.attributes(선택적 요소) 추가 선언 정보입니다.identifier 는 클래스 이름과 같습니다.constructor-body 클래스를 초기화하는 문을 포함하는 블록입니다. 설명정적 생성자는 액세스 한정자를 사용하지 않고 매개 변수를 갖지 않습니다.정적 생성자는 첫 번째 […]