스레드 프로그램의 실행 경로로 정의됩니다. 각 스레드는 고유한 제어 흐름을 정의합니다. 응용 프로그램에 복잡하고 시간이 많이 걸리는 작업이 포함된 경우 각 스레드가 특정 작업을 수행하도록 다른 실행 경로 또는 스레드를 설정하는 것이 종종 도움이 됩니다. 스레드는 경량 프로세스입니다. . 스레드를 사용하는 일반적인 예는 최신 운영 체제에서 동시 프로그래밍을 구현하는 것입니다. 스레드를 사용하면 CPU 주기의 낭비를 줄이고 애플리케이션의 효율성을 높일 수 있습니다. 지금까지 우리는 단일 스레드가 애플리케이션의 실행 인스턴스인 단일
C#은 unsafe로 표시된 경우 코드 블록의 함수에서 포인터 변수를 사용할 수 있습니다. 수정자. 안전하지 않은 코드 또는 비관리 코드가 포인터를 사용하는 코드 블록입니다. 변수. 포인터 포인터 값이 다른 변수의 주소, 즉 메모리 위치의 직접 주소인 변수입니다. 모든 변수나 상수와 마찬가지로 포인터를 선언해야 변수 주소를 저장할 수 있습니다. 포인터 선언의 일반적인 형식은 -입니다. type *var-name; 다음은 유효한 포인터 선언입니다 - int *ip; /* pointer to an integer *
우리는 대리자가 대리자와 동일한 서명을 가진 모든 메서드를 참조하는 데 사용된다는 점에 대해 논의했습니다. 즉, 해당 대리자 개체를 사용하여 대리자가 참조할 수 있는 메서드를 호출할 수 있습니다. 익명 방법 코드 블록을 대리자 매개변수로 전달하는 기술을 제공합니다. 익명 메소드는 이름이 없고 본문만 있는 메소드입니다. 익명 메서드에서는 반환 형식을 지정할 필요가 없습니다. 메서드 본문 내부의 return 문에서 추론됩니다. 익명 방법 작성 익명 메서드는 대리자를 사용하여 대리자 인스턴스 생성과 함께 선언됩니다. 예어. 예를 들
일반 프로그램에서 실제로 사용될 때까지 클래스나 메서드에서 프로그래밍 요소의 데이터 유형 사양을 정의할 수 있습니다. 즉, 제네릭을 사용하면 모든 데이터 유형에서 작동할 수 있는 클래스 또는 메서드를 작성할 수 있습니다. 데이터 유형에 대한 대체 매개변수를 사용하여 클래스 또는 메소드에 대한 사양을 작성합니다. 컴파일러는 클래스에 대한 생성자나 메서드에 대한 함수 호출을 만나면 특정 데이터 형식을 처리하는 코드를 생성합니다. 간단한 예는 개념을 이해하는 데 도움이 됩니다 - 라이브 데모 using System; using Sys
컬렉션 클래스는 데이터 저장 및 검색을 위한 특수 클래스입니다. 이러한 클래스는 스택, 대기열, 목록 및 해시 테이블을 지원합니다. 대부분의 컬렉션 클래스는 동일한 인터페이스를 구현합니다. 컬렉션 클래스는 요소에 동적으로 메모리를 할당하고 인덱스 등을 기반으로 항목 목록에 액세스하는 등 다양한 용도로 사용됩니다. 이러한 클래스는 C#의 모든 데이터 형식에 대한 기본 클래스인 Object 클래스의 개체 컬렉션을 만듭니다. 다양한 컬렉션 클래스 및 사용법 다음은 System.Collection의 일반적으로 사용되는 다양한 클래스입
이벤트 키 누르기, 클릭, 마우스 움직임 등과 같은 사용자 동작 또는 시스템 생성 알림과 같은 일부 발생입니다. 애플리케이션은 이벤트가 발생할 때 이벤트에 응답해야 합니다. 예를 들어, 인터럽트. 이벤트는 프로세스 간 통신에 사용됩니다. 대리인을 이벤트와 함께 사용 이벤트는 클래스에서 선언되고 발생하며 동일한 클래스 또는 일부 다른 클래스 내의 대리자를 사용하여 이벤트 핸들러와 연결됩니다. 이벤트를 포함하는 클래스는 이벤트를 게시하는 데 사용됩니다. 이를 게시자라고 합니다. 수업. 이 이벤트를 수락하는 다른 클래스를 구독자 라고
C# 대리자는 C 또는 C++에서 함수에 대한 포인터와 유사합니다. 대리인 메소드에 대한 참조를 보유하는 참조 유형 변수입니다. 런타임에 참조를 변경할 수 있습니다. 대리자는 특히 이벤트 및 콜백 메서드를 구현하는 데 사용됩니다. 모든 대리자는 System.Delegate에서 암시적으로 파생됩니다. 수업. 대리인 선언 대리자 선언은 대리자가 참조할 수 있는 메서드를 결정합니다. 대리자는 대리자와 동일한 서명을 가진 메서드를 참조할 수 있습니다. 예를 들어 대리인을 생각해 보십시오. public delegate int MyD
인덱서 배열과 같은 객체를 인덱싱할 수 있습니다. 클래스에 대한 인덱서를 정의하면 이 클래스는 가상 배열과 유사하게 동작합니다. . 그런 다음 배열 액세스 연산자([ ])를 사용하여 이 클래스의 인스턴스에 액세스할 수 있습니다. 구문 1차원 인덱서는 다음 구문을 사용합니다. - element-type this[int index] { // The get accessor. get { // return the value specified by index } // The set accessor.
속성 클래스, 구조 및 인터페이스의 명명된 멤버입니다. 클래스 또는 구조의 멤버 변수 또는 메서드를 필드라고 합니다. . 속성은 필드의 확장이며 동일한 구문을 사용하여 액세스됩니다. 접근자를 사용합니다. 이를 통해 개인 필드의 값을 읽거나 쓰거나 조작할 수 있습니다. 속성은 저장 위치의 이름을 지정하지 않습니다. 대신 접근자가 있습니다. 값을 읽거나 쓰거나 계산합니다. 예를 들어 나이, 이름 및 코드에 대한 개인 필드가 있는 학생이라는 클래스가 있다고 가정해 보겠습니다. 클래스 범위 외부에서 이러한 필드에 직접 액세스할 수는 없
반성 객체는 런타임에 유형 정보를 얻는 데 사용됩니다. 실행 중인 프로그램의 메타데이터에 대한 액세스를 제공하는 클래스는 System.Reflection에 있습니다. 네임스페이스. 시스템.반사 네임스페이스에는 응용 프로그램에 대한 정보를 얻고 응용 프로그램에 유형, 값 및 개체를 동적으로 추가할 수 있는 클래스가 포함되어 있습니다. 반성 적용 Reflection에는 다음과 같은 응용 프로그램이 있습니다 - 런타임에 속성 정보를 볼 수 있습니다. 어셈블리에서 다양한 유형을 검사하고 이러한 유형을 인스턴스화할 수 있습니다
속성 프로그램에서 클래스, 메서드, 구조, 열거자, 어셈블리 등과 같은 다양한 요소의 동작에 대한 정보를 런타임에 전달하는 데 사용되는 선언적 태그입니다. 속성을 사용하여 프로그램에 선언적 정보를 추가할 수 있습니다. 선언적 태그는 사용된 요소 위에 있는 대괄호([ ])로 표시됩니다. 속성은 컴파일러 명령과 같은 메타데이터와 주석, 설명, 메서드 및 클래스와 같은 기타 정보를 프로그램에 추가하는 데 사용됩니다. .Net Framework는 두 가지 유형의 속성을 제공합니다. 사전 정의된 속성 및 맞춤 제작 속성. 속성 지정 속성
파일 특정 이름과 디렉토리 경로를 사용하여 디스크에 저장된 데이터 모음입니다. 파일을 읽거나 쓰기 위해 열면 스트림이 됩니다. . 스트림은 기본적으로 통신 경로를 통과하는 바이트 시퀀스입니다. 두 가지 주요 스트림이 있습니다. 입력 스트림 및 출력 스트림 . 입력 스트림 파일(읽기 작업) 및 출력 스트림에서 데이터를 읽는 데 사용됩니다. 파일에 쓰기(쓰기 작업)에 사용됩니다. C# I/O 클래스 System.IO 네임스페이스에는 파일 생성 및 삭제, 파일 읽기 또는 쓰기, 파일 닫기 등과 같은 파일에 대한 수많은 작업을 수행하
예외는 프로그램 실행 중에 발생하는 문제입니다. C# 예외는 0으로 나누려는 시도와 같이 프로그램이 실행되는 동안 발생하는 예외적인 상황에 대한 응답입니다. 예외는 프로그램의 한 부분에서 다른 부분으로 제어를 전송하는 방법을 제공합니다. C# 예외 처리는 다음 네 가지 키워드를 기반으로 합니다. try , 잡다 , 드디어 , 던지기 . 시도 - try 블록은 특정 예외가 활성화된 코드 블록을 식별합니다. 그 뒤에 하나 이상의 catch 블록이 옵니다. 잡다 − 프로그램은 문제를 처리하려는 프로그램의 위치에서 예외 처리기
정규 표현식 입력 텍스트와 일치할 수 있는 패턴입니다. .Net 프레임워크는 이러한 일치를 허용하는 정규식 엔진을 제공합니다. 패턴은 하나 이상의 문자 리터럴, 연산자 또는 구성으로 구성됩니다. 정규 표현식 정의를 위한 구성 정규식을 정의할 수 있는 다양한 범주의 문자, 연산자 및 구문이 있습니다. 이러한 구성을 찾으려면 다음 링크를 클릭하십시오. 문자 이스케이프 캐릭터 클래스 앵커 그룹화 구성 수량자 역참조 구문 대체 구조 교체 기타 구성 정규식 클래스 Regex 클래스는 정
전처리기 지시문은 실제 컴파일이 시작되기 전에 정보를 전처리하도록 컴파일러에 지시합니다. 모든 전처리기 지시문은 #으로 시작하고 공백 문자만 행에서 전처리기 지시문 앞에 나타날 수 있습니다. 전처리기 지시문은 문이 아니므로 세미콜론(;)으로 끝나지 않습니다. C# 컴파일러에는 별도의 전처리기가 없습니다. 그러나 지시문이 있는 것처럼 처리됩니다. C#에서 전처리기 지시문은 조건부 컴파일을 돕는 데 사용됩니다. C 및 C++ 지시문과 달리 매크로를 만드는 데 사용되지 않습니다. 전처리기 지시문은 행의 유일한 명령이어야 합니다. C#
네임스페이스 한 세트의 이름을 다른 세트와 분리하여 유지하는 방법을 제공하기 위해 설계되었습니다. 한 네임스페이스에서 선언된 클래스 이름은 다른 네임스페이스에서 선언된 동일한 클래스 이름과 충돌하지 않습니다. 네임스페이스 정의 네임스페이스 정의는 namespace 키워드로 시작합니다. 다음과 같이 네임스페이스 이름이 옵니다 - namespace namespace_name { // code declarations } 함수 또는 변수의 네임스페이스 사용 버전을 호출하려면 다음과 같이 네임스페이스 이름을 앞에 추가합니다. -
인터페이스는 인터페이스를 상속하는 모든 클래스가 따라야 하는 구문적 계약으로 정의됩니다. 인터페이스는 무엇을 정의합니다. 구문적 계약의 일부와 파생 클래스는 방법을 정의합니다. 구문적 계약의 일부입니다. 인터페이스는 인터페이스의 구성원인 속성, 메서드 및 이벤트를 정의합니다. 인터페이스에는 멤버 선언만 포함됩니다. 멤버를 정의하는 것은 파생 클래스의 책임입니다. 파생 클래스가 따를 표준 구조를 제공하는 데 도움이 되는 경우가 많습니다. 추상 클래스는 어느 정도 같은 목적을 제공하지만 기본 클래스에서 소수의 메서드만 선언하고 파생
C#에서 사용할 수 있는 대부분의 기본 제공 연산자를 재정의하거나 오버로드할 수 있습니다. 따라서 프로그래머는 사용자 정의 유형과 함께 연산자도 사용할 수 있습니다. 오버로드된 연산자는 키워드 operator라는 특수 이름을 가진 함수입니다. 다음에 정의되는 연산자에 대한 기호가 옵니다. 다른 함수와 마찬가지로 오버로드된 연산자에는 반환 유형과 매개변수 목록이 있습니다. 예를 들어, 다음 함수로 이동하십시오 - public static Box operator+ (Box b, Box c) { Box box = new Box(
다형성이라는 단어 형태가 많다는 뜻입니다. 객체 지향 프로그래밍 패러다임에서 다형성은 종종 하나의 인터페이스, 다중 기능으로 표현됩니다. 다형성은 정적이거나 동적일 수 있습니다. 정적 다형성에서 , 함수에 대한 응답은 컴파일 시간에 결정됩니다. 동적 다형성에서 , 런타임에 결정됩니다. 정적 다형성 컴파일 시간 동안 함수와 객체를 연결하는 메커니즘을 초기 바인딩이라고 합니다. 정적 바인딩이라고도 합니다. C#은 정적 다형성을 구현하는 두 가지 기술을 제공합니다. 그들은 - 함수 오버로딩 연산자 오버로딩 다음 장에서 연산자 오
객체 지향 프로그래밍에서 가장 중요한 개념 중 하나는 상속입니다. 상속을 통해 다른 클래스의 관점에서 클래스를 정의할 수 있으므로 애플리케이션을 더 쉽게 만들고 유지 관리할 수 있습니다. 이는 또한 코드 기능을 재사용하고 구현 시간을 단축할 수 있는 기회를 제공합니다. 클래스를 생성할 때 완전히 새로운 데이터 멤버와 멤버 함수를 작성하는 대신 프로그래머는 새 클래스가 기존 클래스의 멤버를 상속하도록 지정할 수 있습니다. 이 기존 클래스를 기본이라고 합니다. 클래스이며 새 클래스는 파생이라고 합니다. 수업. 상속이라는 개념은 IS
C 언어