C #은 Java의 치명적인 경쟁자로 2000 년에 Microsoft Corporation에서 개발 한 다목적의 강력한 프로그래밍 언어입니다. 웹 개발과 데스크톱 애플리케이션 개발 모두에서 가장 인기 있고 지배적 인 프로그래밍 언어입니다.
이 C # 자습서에서는 다음 개념을 학습합니다.
C # 기초
C # 프로그래밍 언어 소개
90 년대 초반에 Java는 웹 개발, 데스크톱 애플리케이션 개발 및 기타 여러 분야에서 선도적 인 프로그래밍 언어였습니다. Microsoft는 Java를 훨씬 뒤처지게 할 수있는 많은 고급 기능을 갖춘 경쟁 업체를 찾고 싶었습니다.
2000 년이었는데 Anders Hejlsberg 그의 마이크로 소프트 팀은 C-Sharp로 널리 알려진 C #의 아이디어를 내놓았습니다. 이 이니셔티브는 국제 표준기구의 승인을 받았습니다. (주요한) 및 유럽 컴퓨터 제조업체 협회 (ECMA). 마지막으로 C #은 소프트웨어 개발의 세계로 들어갑니다..
C # 프로그래밍 언어의 기능
- 객체 지향 프로그래밍 언어
객체 지향 프로그래밍 접근 방식은 C #을 가장 프로그래머에게 친숙하고 프로그래밍 언어를 개발 및 유지 관리하기 쉽게 만드는 요소입니다.
- 형식에 안전한 언어
Type-Safe의 의미는 컴파일러가 실행 권한이있는 메모리 위치에만 액세스 할 수 있다는 것입니다. 이 기능은 코드 안전성을 지수 수준으로 향상시킵니다.
- 상호 운용성
상호 운용성의 기능을 통해 C #은 C ++ 자체를 능가 할 수있는보다 효율적인 방식으로 C ++ 고유의 모든 작업을 수행 할 수 있습니다.
- 풍부한 도서관
C #은 미리 프로그래밍 된 기능을 제공하는 여러 내장 라이브러리에 대한 액세스를 제공하여 개발 프로세스에 소요되는 시간을 줄입니다.
- 확장 가능하고 업데이트 가능
C #은 다른 프로그래밍 언어보다 우수하도록 설계되었습니다. 따라서 항상 업데이트에 개방되어 있으며 기능으로 확장 성이 뛰어납니다.
- 구성 요소 지향
Microsoft의 개발자는 구성 요소 기반 접근 방식을 사용하여 C #을 개발했습니다. 이것은 C #의 확장 성과 업데이트를 유지하기위한 가장 지배적 인 개발 방법입니다.
- 구조화 된 언어
구조적 프로그래밍 접근 방식은 절차 지향 프로그래밍 접근 방식에 비해 소프트웨어를 컴파일하고 배포하기가 쉽기 때문에 소프트웨어 개발 수명주기 동안 선호됩니다.
- 빠른
C # 프로그래밍은 C ++ 및 기타 프로그래밍 언어에 비해 컴파일 및 실행이 더 빠릅니다.
설치
입증되었습니다 마이크로 소프트 비주얼 스튜디오 C # 프로그래밍을위한 클래스 편집기에서 최고입니다. 아래 단계에 따라 C # 프로그램을 실행하기 위해 Microsoft Visual Studio를 설치하고 설정합니다.
1 단계 : Microsoft Visual Studio 다운로드
Google을위한 최신 버전의 Visual Studio 그리고 다운로드 설치 로컬 시스템에 파일을 저장 한 다음 운영 설치 파일 로 관리자.
2 단계 : .NET 데스크톱 개발 패키지 선택
설치 프로그램을 실행하면 Visual Studio 편집기가 로컬 시스템에 성공적으로 다운로드되고 나중에 바탕 화면에 적을 묻는 대화 상자가 표시됩니다. 특정 패키지 시스템에 필요합니다. 여기에서 .NET 데스크톱 개발 꾸러미.
3 단계 : C # 환경 설정
패키지를 .NET 개발 다운로드하면 찾고있는 개발 환경을 묻는 다른 대화 상자가 화면에 표시됩니다. 여기에서 C #에 대한 환경을 선택하십시오.
4 단계 : 첫 번째 프로젝트 만들기
환경이 설정되면 모든 작업을 수행 할 수 있습니다. Visual Studio를 시작하고 새 프로젝트 생성 표시된 대화 상자에서 옵션.
다음 대화 상자로 리디렉션되며 여기에서 클래스 라이브러리를 선택해야합니다. .NET 표준 아래 그림과 같이.
다음 대화 상자에서 프로젝트 구성 . 구성하면 이제 편집기에 있습니다. 첫 번째 프로그램을 작성하고 운영 그것. 출력은 성공적으로 표시됩니다. 명령 프롬프트.
시스템 클래스 Edureka 사용 {static void Main (string [] args) {Console.WriteLine ( 'Welcome to Edureka !, Happy Learning ..!')}}
//산출:
첫 번째 C # 프로그램을 실행하겠습니다.
C # 프로그램 구조
이제 첫 번째 C # 프로그램을 실행 했으므로 그 구조를 자세히 이해하겠습니다. 간단한 C # 프로그램은 다음과 같은 부분으로 구성됩니다.
using System namespace ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ( 'Welcome to Edureka !, Happy Learning ..!')}}}
//산출:
Edureka에 오신 것을 환영합니다!, Happy Learning ..!
- 수업: 클래스는 일반적으로 예어 C # 프로그램에서 클래스를 정의하는 데 사용됩니다.
- Edureka : 의 이름입니다 수업. 클래스는 클래스와 관련된 멤버 및 메서드를 저장하는 청사진으로 간주되는 경우가 많습니다.
- 본관: 기본적으로 기본 방법 전체 C # 프로그램 중 컨트롤이 프로그램에 들어가는 게이트웨이 역할을합니다. 프로그램의 다른 방법이 실행되기 전에 실행됩니다.
- 빈: 이 코드 세그먼트는 반환 유형 방법의. void 이외의 데이터 유형이 될 수 있습니다. Void는 메서드에 반환되는 데이터가 없음을 의미합니다.
- 공전: 이것은 예어 선언 된 데이터 멤버가 정적이고 선언 된 멤버에 전용 메모리가 할당되었음을 나타냅니다.
- String [] 인수 : 프로그램에서 사용하는 명령 줄 인수와 비슷합니다. 프로그램을 실행하는 동안 기본적으로 인수, 이 성명 때문에 프로그램에 의해 승인됩니다.
- System.Console.WriteLine ( 'Edureka에 오신 것을 환영합니다!, 행복한 학습 ..!') 여기, 체계 이다 네임 스페이스. 콘솔카테고리가 설명되어 있다는 것입니다.시스템 네임 스페이스에서. 그만큼 WriteLine () 그게공전기술콘솔기록에 사용되는 카테고리콘솔의 텍스트.
이제 C #에서 사용할 수있는 데이터 유형에 대해 알아 보겠습니다.
데이터 유형
C #의 데이터 유형은 세 가지 범주로 나뉩니다.
값 데이터 유형
그만큼 값 데이터 유형 에 있습니다 System.ValueType 라이브러리는 항상 직접 액세스 할 수 있으며 변수를 특정 값에 직접 할당 할 수 있습니다. 값 데이터 유형은 다음과 같이 두 가지 유형으로 더 분류됩니다.
- 미리 정의 된 데이터 유형
- 사용자 정의 데이터 유형
사전 정의 된 데이터 유형 : 이것들은 우리가 일상적인 프로그래밍에서 일반적으로 사용하는 것들입니다. 이러한 데이터 유형은 언어 개발자가 미리 정의하고 프로그래머가 사용할 준비가되어 있습니다.
예:
int, float, char, short double 등
사용자 정의 데이터 유형 : 데이터 유형의 다른 값을 하나의 단일 변수에 저장해야하는 상황이 있습니다. 이 경우 미리 정의 된 데이터 유형 충분하지 않습니다. 사용자 정의 데이터 유형은 사용자가 사용자 정의 할 수있는 데이터 유형과 같습니다.
예 : 구조, 열거 형
데이터 형식 | 할당 된 메모리 범위 | 메모리 크기 |
서명 된 문자 | -128에서 127 | 1 바이트 |
부호없는 문자 | 0에서 127 | 1 바이트 |
숯 | -128에서 127 | 1 바이트 |
짧은 서명 | -32,768에서 32,767 | 2 바이트 |
서명되지 않은 짧은 | 0에서 65,535 | 2 바이트 |
짧은 | -32,768에서 32,767 | 2 바이트 |
서명 된 정수 | -2,147,483,648 ~ -2,147,483,647 | 4 바이트 |
서명되지 않은 정수 | 0에서 4,294,967,295 | 4 바이트 |
int | -2,147,483,648 ~ -2,147,483,647 | 4 바이트 |
오래 서명 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 8 바이트 |
부호없는 긴 | 0 ~ 18,446,744,073,709,551,615 | 8 바이트 |
긴 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 8 바이트 |
흙손 | 1.5 * 10-45 – 3.4 * 1038, (7 자리 정밀도) | 4 바이트 |
더블 | 5.0 * 10-324 – 1.7 * 10308, (15 자리 정밀도) | 8 바이트 |
소수 | -7.9 * 10-28 – 7.9 * 1028, (28 자리 정밀도) | 16 바이트 |
포인터 데이터 유형
포인터 유형은 단순한 데이터 유형입니다. 그 기능은 C의 포인터와 완전히 유사합니다. 다른 포인터의 주소를 저장하도록 설계되었습니다.
float * ptr
참조 데이터 유형
이름은 자명합니다. 그만큼 참조 데이터 유형 실제로 변수를 저장하지 않고 대신 해당 특정 변수에 대한 참조 값을 저장합니다. 즉, 실제 변수의 주소를 저장합니다.
참조 변수는 아래와 같이 세 가지 유형으로 분류됩니다.
- 개체 유형
개체 데이터 유형은 System.Object 수업.그 물체유형될 수 있습니다할당값다른 유형,참고유형, 사전 정의, 사용자 정의유형. 하지만 전에할당값이 필요합니다. 유형 변환.
object abc abc = 50 // 이것은 권투라고합니다.
- 동적 유형
동적 유형 변수는 거의 모든 유형의 값을 저장하도록 설계되었습니다. 값의 유형 검사가 런타임에 이루어지기 때문에 동적 유형이라고합니다.
동적 x = 10
- 문자열 유형
문자열 유형은 System.String 수업. 문자열 유형은 문자열 리터럴을 저장하도록 설계되었습니다. 문자열 리터럴은 다음 두 가지 형식으로 저장됩니다.두 가지 형태
- 인용
- @quoted.
문자열 S = 'Edureka'
- 그만큼 @ 인용 문자열 리터럴은 다음과 같습니다.
@ 'Edureka'
이제 변수를 이해합시다.
변수
변수는 사용자가 제공 한 특정 데이터를 저장하는 메모리 위치에 할당 된 이름이며 해당 데이터는 변수 이름을 사용하여 쉽게 액세스 할 수 있습니다. C #에서는 5 가지 유형의 변수를 사용할 수 있습니다.
유형 | 예 |
없는 | Null 데이터 |
부울 | 진실과 거짓 |
정수 | Int, Char, Byte, Short, Long |
흙손 | Float 및 Double |
소수 | 소수 |
예:
int a, b double x float p char abc
C #에서 변수를 선언하기 위해 따라야 할 규칙
- 변수에는 알파벳, 숫자 및 밑줄이 포함될 수 있습니다.
- 변수 이름은 알파벳 또는 밑줄로만 시작할 수 있습니다.
- 변수는 숫자 또는 특수 문자로 시작할 수 없습니다.
- 변수 이름 사이에는 공백이 허용되지 않습니다.
- 예약 된 키워드는 변수 이름으로 사용되지 않습니다.
연산자
연산자는 특정 수학을 수행하는 컴퓨터를 설명하는 특수 기호로 정의 할 수 있으며 변수 집합에 대한 논리 연산입니다. C #은 아래와 같이 다양한 연산자를 포함합니다.
- 산술 연산자
- 관계 연산자
- 논리 연산자
- 비트 연산자
- 할당 연산자
산술 연산자
운영자 | 예 | 기술 |
+ | A + B | 두 개의 피연산자를 추가합니다. |
- | A – B | 두 개의 피연산자를 뺍니다. |
* | A * B | 두 피연산자 배수 |
/ | A / B | 두 개의 피연산자를 나눕니다. |
% | A % B | 두 피연산자의 나머지 |
++ | ++ | 증분 작업 |
- | 에- | 감소 작업 |
관계 연산자
운영자 | 예 | 기술 |
== | A == B | True, 두 피연산자가 같으면 Else False |
! = | A! = B | True, 두 피연산자가 같지 않으면 Else False |
> | A> B | A가 더 크면 True, 그렇지 않으면 False |
< | 에 | True, B가 더 크면 False |
> = | A> = B | True, A가 크거나 같으면 그렇지 않으면 False |
<= | 에<= B | True, id B가 더 크거나 같지 않으면 False |
논리 연산자
운영자 | 예 | 기술 |
&& | A && B | True, 두 피연산자가 모두 참이면 그렇지 않으면 False |
|| | A || 비 | True, 피연산자 중 하나가 true이면 Else False |
! | ㅏ ! 비 | 피연산자의 논리적 상태를 되돌립니다. |
비트 연산자
에 | 비 | A & B | A | 비 | A ^ B |
하나 | 하나 | 하나 | 하나 | 0 |
하나 | 0 | 0 | 하나 | 하나 |
0 | 하나 | 0 | 하나 | 하나 |
0 | 0 | 0 | 0 | 0 |
운영자 | 예 | 기술 |
~ | (~ A) | 이진 1의 보수 연산자는 단항이며 비트를 '플 리핑'하는 효과가 있습니다. |
<< | 에<<2 | 이진 왼쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자에 지정된 비트 수만큼 왼쪽으로 이동합니다. |
>> | A >> 2 | 이진 오른쪽 시프트 연산자. 왼쪽 피연산자 값은 오른쪽 피연산자에 지정된 비트 수만큼 오른쪽으로 이동합니다. |
할당 연산자
운영자 | 예 | 기술 |
= | A = B + C | A = B + C, B + C는 A에 할당됩니다. |
+ = | A + = B | A = A + B, A + B는 A에 할당됩니다. |
-= | A-= B | A = A-B, A-B는 A에 할당됩니다. |
* = | A-= B | A = A * B, A * B는 A에 할당됩니다. |
/ = | A / = B | A = A / B, A / B가 A에 할당 됨 |
% = | A % = B | A = A % B, A % B가 A에 할당 됨 |
<<= | 에<<= 2 | 왼쪽 시프트 및 할당 연산자 |
>> = | A >> = 2 | 오른쪽 시프트 및 할당 연산자 |
& = | A & = 2 | 비트 및 할당 연산자 |
^ = | A ^ = 2 | 비트 배타적 및 할당 연산자 |
| = | A! = 2 | 비트 포함 및 할당 연산자 |
루프
에 고리 문은 특정 조건이 충족 될 때까지 문 블록을 반복적으로 실행하는 데 사용됩니다. C # 언어는 다음과 같은 루프 문으로 구성됩니다.
- For 루프
- While 루프
- Do While 루프
For 루프
그만큼 for 루프 주어진 조건이 충족 될 때까지 특정 코드 세그먼트를 여러 번 실행하는 데 사용됩니다.
통사론
for (초기화 조건 증가 / 감소) {// 코드 세그먼트}
플로우 차트 :
예:
시스템 공용 클래스 사용 예 {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } }
//산출:
하나
2
삼
4
5
While 루프
그만큼 While 루프 특정 조건이 충족 될 때까지 코드 세그먼트를 여러 번 실행하는 데 사용됩니다.
통사론
while (condition) {// 실행할 코드}
플로우 차트 :
예:
using System namespace Loops {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } }
//산출:
a의 가치 : 5
a의 값 : 6
a의 값 : 7
a의 값 : 8
a의 값 : 9
a의 값 : 10
Do While 루프
Do while 루프는 While 루프와 완전히 유사하지만 유일한 차이점은 조건이 루프의 끝에 배치된다는 것입니다. 따라서 루프는 한 번 이상 실행됩니다.
통사론
do {// 실행할 코드} while (조건)
플로우 차트 :
예:
시스템 네임 스페이스 사용 Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1, n = 5, product do {product = n * i Console.WriteLine ( '{0} * {1} = { 2} ', n, i, product) i ++} while (i<= 10) } } }
//산출:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
가정 어구
조건문 실행하는 데 사용됩니다 성명서 또는 그룹 명세서 어떤 조건에 따라. 만약 질환 그럼 사실이야 C # 문 그렇지 않으면 다음이 실행됩니다. 성명서 실행됩니다.
C ++ 언어의 다양한 유형의 조건문은 다음과 같습니다.
- If 문
- If-Else 문
- 중첩 된 If-else 문
- If-Else If 래더
- Switch 문
If 문
싱글 만약 조건이 참인 경우 코드를 실행하는 데 C # 언어의 문이 사용됩니다. 단방향 선택 문이라고도합니다.
통사론
if (boolean-expression) {// boolean-expression이 true 인 경우 실행되는 문}
플로우 차트 :
예:
시스템 네임 스페이스 사용 조건부 {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } }
//산출:
2는 5보다 작습니다.
이 문은 항상 실행됩니다.
If-Else 문
그만큼 다른 경우라면 조건이 참 또는 거짓 인 경우 C 언어의 문을 사용하여 코드를 실행합니다. 양방향 선택 문이라고도합니다.
통사론
if (boolean-expression) {// boolean-expression이 true 인 경우 실행되는 문} else {// boolean-expression이 false 인 경우 실행되는 문}
플로우 차트 :
예:
시스템 네임 스페이스 사용 조건부 {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } }
//산출:
12는 5보다 크거나 같습니다.
이 문은 항상 실행됩니다.
중첩 된 If-else 문
중첩 다른 경우라면 문은 프로그램에 둘 이상의 테스트 표현식이 필요할 때 사용됩니다. 다 방향 선택 문이라고도합니다. 일련의 결정이 성명서에 포함될 때 우리는 다른 경우라면 중첩 된 형식의 문.
통사론
if (boolean-expression) {if (nested-expression-1) {// 실행할 코드} else {// 실행할 코드}} else {if (nested-expression-2) {// 실행할 코드 } else {// 실행할 코드}}
플로우 차트 :
예:
using System namespace 조건부 {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first//산출:
13이 가장 큽니다.
Else-if 사다리
그만큼 그렇지 않다면 문은 여러 조건에서 하나의 코드를 실행하는 데 사용됩니다. 다중 경로 결정문이라고도합니다. 각 if 문이 else if 문과 연결되고 last가 else 문이되는 if..else 문 체인입니다.
통사론
if (condition1) {// condition1이 참이면 실행되는 코드} else if (condition2) {// condition2가 참이면 실행되는 코드} else if (condition3) {// condition3이 참이면 실행할 코드} ... else {// 모든 조건이 거짓 인 경우 실행할 코드}플로우 차트 :
예:
using System class Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ( 'i is 10') else if (i == 15) Console.WriteLine ( ' i is 15 ') else if (i == 20) Console.WriteLine ('i is 20 ') else Console.WriteLine ('i is not present ')}}//산출:
나는 20 살이다
Switch 문
스위치 문은 케이스 목록을 테스트하는 데 사용되는 긴 if-else-if 래더를 대체하는 역할을합니다. switch 문에는 switch 식에 대해 테스트되는 하나 이상의 case 레이블이 포함됩니다. 표현식이 케이스와 일치하면 해당 케이스와 연관된 명령문이 실행됩니다.
통사론
switch (변수 / 표현식) {case value1 : // expression (또는 변수) = value1 인 경우 실행되는 문 break case value2 : // expression (또는 변수) = value1 인 경우 실행되는 문 break ... ... ... .. . ... ... default : // 대소 문자가 일치하지 않는 경우 실행되는 명령문}플로우 차트 :
예:
using System namespace Conditional {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ( 'Enter an alphabet') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {case 'a': Console.WriteLine ( 'Vowel') break case 'e': Console.WriteLine ( 'Vowel') break case 'i': Console.WriteLine ( 'Vowel') break case 'o': Console.WriteLine ( 'Vowel') break case 'u': Console.WriteLine ( 'Vowel') break 기본값 : Console.WriteLine ( 'Not a vowel') break}}}}//산출:
알파벳을 입력하세요.
이다
모음
문자열
끈 데이터 유형은 다음의 구성원입니다. System.String 수업. 문자 유형의 데이터를 저장할 수 있습니다. Stings에 대한 다양한 작업을 수행 할 수 있습니다.연결, 비교, 하위 문자열 가져 오기, 검색, 트림, 교체 등.
문자열과 문자열의 비유
C #에서 끈 과 끈 동등합니다. 단어 문자열은 예어 그리고 역할 System.String 수업. 두 버전 중 하나를 사용하여 문자열을 선언 할 수 있습니다.
통사론:
string s1 = 'Edureka'// 문자열 키워드를 사용하여 문자열 만들기 String s2 = '행복한 학습'// String 클래스를 사용하여 문자열 만들기예:
using System public class StringExample {public static void Main (string [] args) {string s1 = 'Edureka'char [] ch = { 'C', 's', 'h', 'a', 'r', ' p ',' ','T ','u ','t ','o ','r ','i ','a ','l '} string s2 = new string (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}//산출:
Edureka
Csharp 튜토리얼
C #의 문자열 메서드
방법 기술 클론 () 이 String 인스턴스에 대한 참조를 반환하는 데 사용됩니다. 비교 (문자열, 문자열) 지정된 두 String 개체를 비교하는 데 사용됩니다. Concat (문자열, 문자열) 지정된 두 개의 String 인스턴스를 연결합니다. 포함 (문자열) 지정된 하위 문자열을 나타내는 값을 반환합니다. 복사 (문자열) 동일한 값으로 String의 새 인스턴스를 만드는 데 사용됩니다. CopyTo (Int, Char [], Int, Int) 지정된 위치에서 문자를 복사합니다. 같음 (문자열, 문자열) 두 String 개체의 값이 같은지 확인합니다. 형식 (문자열, 개체) 지정된 문자열에서 하나 이상의 형식 항목 바꾸기 IndexOf (문자열) 0부터 시작하는 첫 번째 색인을보고합니다. 삽입 (Int32, 문자열) 인덱스에 문자열이 삽입 된 새 문자열을 반환합니다. IsInterned (문자열) 이 문자열이 유니 코드 정규화 형식 C임을 나타냅니다. IsNullOrEmpty (문자열) 지정된 문자열이 null 또는 빈 문자열임을 나타냅니다. IsNullOrWhiteSpace (문자열) 지정된 문자열이 null인지, 비어 있는지 여부를 나타내는 데 사용됩니다. 조인 (문자열, 문자열 []) string 형 배열의 모든 요소를 연결하는 데 사용됩니다. LastIndexOf (Char) 마지막 문자의 0부터 시작하는 인덱스 위치를보고합니다. LastIndexOfAny (Char []) 마지막 문자의 0부터 시작하는 인덱스 위치를보고합니다. 제거 (Int32) 모든 문자가 포함 된 새 문자열을 반환합니다. 바꾸기 (문자열, 문자열) 모든 문자열이있는 새 문자열을 반환합니다. 분할 (Char []) 문자열을 하위 문자열로 분할하는 데 사용됩니다. StartsWith (문자열) 이 문자열의 시작 여부를 확인하는 데 사용됩니다. 하위 문자열 (Int32) 이 인스턴스에서 하위 문자열을 검색하는 데 사용됩니다. ToCharArray () 이 인스턴스의 문자를 유니 코드 배열에 복사합니다. ToString () String의 인스턴스를 반환하는 데 사용됩니다. 손질() 문자열을 다듬습니다.
배열다른 프로그래밍 언어와 마찬가지로 C #에는 배열이 있습니다. 배열은 인접한 메모리 위치에 동일한 데이터 유형의 요소를 저장하도록 설계된 단순한 데이터 구조입니다.
C #은 다음 배열 유형을 지원합니다.
- 단일 차원 배열
- 다차원 배열
- 들쭉날쭉 한 배열
단일 차원 배열
단일 차원 배열은 단일 행 형태로 요소를 저장합니다.
통사론
int [] arr = 새 int [5] // 배열 생성예:
using System public class ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 for (int i = 0 i//산출:
10
스물
30
40
오십
다차원 배열
Multidimensional Array는 행렬 및 큐브 등과 같은 다중 차원의 형태로 요소를 저장합니다.
통사론
int val = a [2,3]예:
시스템 네임 스페이스 ArrayApplication {class MyArray {static void Main (string [] args) {int [,] a = new int [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} int i, j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } }//산출:
a [0,0] = 0
a [0,1] = 0
a [1,0] = 1
a [1,1] = 2
a [2,0] = 2
a [2,1] = 4
a [3,0] = 3
a [3,1] = 6
a [4,0] = 4
a [4,1] = 8
들쭉날쭉 한 배열
Jagged Array는 단순히 배열의 배열입니다.
예:
시스템 네임 스페이스 ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 사용 }, new int [] {2,4}, new int [] {3, 6}, new int [] {4, 8}} int i, j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } }//산출:
a [0] [0] = 0
a [0] [1] = 0
a [1] [0] = 1
a [1] [1] = 2
a [2] [0] = 2
a [2] [1] = 4
a [3] [0] = 3
a [3] [1] = 6
a [4] [0] = 4
a [4] [1] = 8
컬렉션
수집은 수집 된 데이터에 일부 기능을 적용하기 위해 함께 수집 된 개체의 그룹으로 간주 될 수 있습니다. 컬렉션에서 수행 할 수있는 작업은 다음과 같습니다.
- 저장소 개체
- 개체 업데이트
- 개체 삭제
- 개체 검색
- 검색 개체 및
- 개체 정렬
컬렉션 유형
컬렉션 작업에는 세 가지 다른 가능성이 있습니다. 세 가지 네임 스페이스가 아래에 언급되어 있습니다.
- System.Collections.Generic 클래스
- System.Collections 클래스
- System.Collections.Concurrent 클래스
System.Collections.Generic 클래스에는 다음과 같은 다양한 클래스가 있습니다.
- 명부
- 스택
- 열
- LinkedList
- HashSet
- SortedSet
- 사전
- SortedDictionary
- SortedList
그만큼 System.Collections 클래스는 레거시 클래스로 간주됩니다. 그들은 다음과 같은 수업을 포함합니다.
- ArrayList
- 스택
- 열
- 해시 테이블
그만큼 System.Collections.Concurrent 클래스네임 스페이스는 스레드로부터 안전한 작업을위한 클래스를 제공합니다. 이제 여러 스레드가 컬렉션 항목에 액세스하는 데 문제를 일으키지 않습니다. 여기에서 사용할 수있는 클래스는 다음과 같습니다.
- BlockingCollection
- ConcurrentBag
- ConcurrentStack
- ConcurrentQueue
- ConcurrentDictionary
- 파티션
- 파티션
- OrderablePartitioner
명부
그만큼 명부 사용 가능한 데이터 구조로 간주됩니다. System.Collection.Generics 네임 스페이스. 요소를 저장하고 가져올 수 있습니다. 목록은 중복 요소를 저장할 수 있습니다.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {var names = new List () names.Add ( 'Sandhya') names.Add ( 'Arun') names.Add ( 'Prashanth') names.Add ( 'Kiran') foreach (이름의 var 이름) {Console.WriteLine (name)}}}//산출:
산 디아
아룬
Prashanth
Kiran
해시 세트
C # HashSet카테고리는 종종 익숙합니다저장,빼앗다또는구성 요소 읽기. 그것하지 않습니다중복 저장구성 요소.그것은 촉구된다사용 HashSet 범주만약당신이있어저장하다혼자서 독특한 구성 요소 . 이것의 System.Collections.Generic 네임 스페이스에 있습니다.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ( 'Sunil') names.Add ( 'Amar') names.Add ( 'Pujari') names.Add ( 'Imran') names.Add ( 'karan') foreach (이름의 var 이름) {Console.WriteLine (name)}}}//산출:
수닐
아마르
푸 자리
임란
카란
정렬 된 세트
C # SortedSet수업은 종종 익숙합니다저장, 없애다 또는 읽다 집단 . 오름차순을 유지하고하지 않습니다중복 저장집단.그것은 신속하다SortedSet을 사용하려면범주만약당신이있어저장하다 독특한 구성 요소 오름차순을 유지합니다.이것의System.Collections.Generic 네임 스페이스에 있습니다.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ( 'Sanjay') names.Add ( 'Anuradha') names.Add ( 'Praveen') names.Add ( 'Ravi') names.Add ( 'Kajol') foreach (이름의 var 이름) {Console.WriteLine (name)}}}//산출:
아누 라다
카졸
Praveen
라비
산 제이
스택
그만큼 스택 다음과 같은 간단한 컬렉션입니다. 가장자리 또는 그 안에 저장된 요소를 처리하는 동안 선입 선출 절차.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ( 'Chandan') names.Push ( 'Pooja') names.Push ( 'James') names.Push ( 'Rajesh') names.Push ( 'kumar') foreach (이름의 문자열 이름) {Console.WriteLine (name)} Console.WriteLine ( 'Peek 요소 :'+ names.Peek () ) Console.WriteLine ( 'Pop :'+ names.Pop ()) Console.WriteLine ( 'After Pop, Peek 요소 :'+ names.Peek ())}}//산출:
쿠마르
Rajesh
제임스
푸자
찬단
Peek 요소 : kumar
팝 : kumar
팝 이후, Peek 요소 : Rajesh
열
대기열은 Stack과 완전히 유사하지만 유일한 차이점은 대기열이 뒤따른다는 것입니다. FIFO 또는 저장된 요소를 처리하는 동안 선입 선출 원칙.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ( 'Srujan') names.Enqueue ( 'Prajat') names.Enqueue ( 'John') names.Enqueue ( 'Raju') names.Enqueue ( 'Hari') foreach (이름의 문자열 이름) {Console.WriteLine (name)} Console.WriteLine ( 'Peek 요소 :'+ names.Peek () ) Console.WriteLine ( 'Dequeue :'+ names.Dequeue ()) Console.WriteLine ( 'After Dequeue, Peek 요소 :'+ names.Peek ())}}//산출:
Srujan
프라자 트
남자
맹렬한
일
엿보기 요소 : Srujan
대기열에서 빼기 : Srujan
대기열에서 빼기 후 Peek 요소 : Prajat
연결된 목록
연결 목록은 동적 메모리 모음입니다. 연결 목록의 요소는 힙에서 메모리에 액세스하고 해당 주소를 연결하여 연속 순서로 요소를 저장하여 저장됩니다.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ( 'Rajat') names.AddLast ( 'Arun') names.AddLast ( 'Prakash') names.AddLast ( 'jay') names.AddFirst ( 'sai') foreach (이름의 var 이름) {Console.WriteLine (name)}}}//산출:
sai
범위
아룬
Prakash
어치
사전
사전 범주사용생각해시 테이블의. 값을 저장합니다.전제열쇠의. 포함독특한열쇠혼자서. 으로원조열쇠,우리는 단순히검색 또는요소를 빼앗다.이것의System.Collections.Generic 네임 스페이스에 있습니다.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ( '1', 'Shiva') names.Add ( '2', 'Prasad') names.Add ( '3', 'Preetam') names.Add ( '4', 'Roy') names.Add ( '5', 'Akash') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + ''+ kv.Value)}}}//산출:
1 시바
2 프라 사드
3 프리 텀
4 로이
5
아카 쉬
정렬 된 사전
그만큼 SortedDictionary 범주사용디자인해시 테이블의. 값을 저장합니다.아이디어열쇠의. 포함독특한키를 누르고 오름차순을 유지합니다.아이디어열쇠의. 으로원조열쇠,우리는 단순히검색 또는요소를 빼앗다.이것의System.Collections.Generic 네임 스페이스에 있습니다.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ( '1', 'Arun') names.Add ( '4', 'Vishal') names.Add ( '5', 'Ramesh') names.Add ( '3', 'Vidya') names.Add ( '2', 'Pallavi') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + ''+ kv.Value)}}}//산출:
1 시바
2 프라 사드
3 프리 텀
4 로이
5아카 쉬
정렬 된 목록
그만큼 SortedList 이다an키 / 값 쌍의 배열. 값을 저장합니다.전제열쇠의. SortedList범주포함독특한키를 누르고 오름차순을 유지합니다.전제열쇠의. 으로원조열쇠,우리는 간단히검색 또는 제거집단.이것의발견 System.Collections.Generic 네임 스페이스.
예:
System.Collections.Generic을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ( '1', 'Arun') names.Add ( '4', 'Vishal') names.Add ( '5', 'Ramesh') names.Add ( '3', 'Vidya') names.Add ( '2', 'Pallavi') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + ''+ kv.Value)}}}//산출:
1 아룬
2 팔라 비
3 비 디아
4 비샬
5라 메쉬
구조
구조는 서로 다른 데이터 유형의 여러 요소를 저장하도록 설계된 사용자 정의 데이터 유형입니다. 구조는 키워드를 사용하여 선언됩니다. 구조체.
예:
using System struct Books {public string title public string author public string subject public int book_id} public class Edureka {public static void Main (string [] args) {Books Book1 Books Book2 Book1.title = 'C # Programming'Book1.author = ' Ramchandra Kumar 'Book1.subject ='C ++ 프로그래밍 튜토리얼 'Book1.book_id = 95908978 Book2.title ='텔레콤 빌링 'Book2.author ='카란 'Book2.subject ='텔레콤 빌링 튜토리얼 'Book2.book_id = 18674900 Console.WriteLine ( '책 1 제목 : {0}', Book1.title) Console.WriteLine ( '책 1 저자 : {0}', Book1.author) Console.WriteLine ( '책 1 제목 : {0}', Book1.subject) Console.WriteLine ( 'Book 1 book_id : {0}', Book1.book_id) Console.WriteLine ( 'Book 2 title : {0}', Book2.title) Console.WriteLine ( 'Book 2 저자 : {0}', Book2.author) Console.WriteLine ( 'Book 2 subject : {0}', Book2.subject) Console.WriteLine ( 'Book 2 book_id : {0}', Book2.book_id) Console.ReadKey ()}}//산출:
제 1 권 제목 : C # 프로그래밍
제 1 권 저자 : Ramchandra Kumar
제 1 권 주제 : C ++ 프로그래밍 튜토리얼
1 권 book_id : 95908978
제 2 권 제목 : 통신 청구
제 2 권 저자 : Karan
제 2 권 주제 : 통신 청구 자습서
제 2 권 book_id : 18674900
기능
이 함수는 메인 코드의 코드 블록으로 정의됩니다. 이 함수는 코드 블록에 지정된 명령문을 실행하는 데 사용됩니다. 기능은 다음 구성 요소로 구성됩니다.
- 기능 명 : 함수를 호출하는 데 사용되는 고유 한 이름입니다.
- 반환 유형 : 함수 반환 값의 데이터 유형을 지정합니다.
- 몸: 실행 가능한 명령문이 포함되어 있습니다.
- 액세스 지정자 : 응용 프로그램에서 기능 접근성을 지정합니다.
- 매개 변수 : 호출 중에 함수에 전달할 수있는 인수 목록입니다.
통사론
FunctionName () {// 함수 본문 // 반환 문}예:
using System namespace FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ( 'Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ( 'To Edureka') Console.WriteLine ( 'Welcome'+ message)}}}//산출:
내부 쇼 기능
Edureka에 오신 것을 환영합니다
함수는 세 가지 방법으로 실행할 수 있습니다.
- 가치로 부르기
- 참조로 전화
- 출력 매개 변수
가치로 부르기
C #에서는 값 -유형 매개 변수아르그 패스복제품원래 가치의대신 기능참고. 그것하지 않습니다수정첫 번째 값. 안수정안 생성통과가치는 아닙니다나이특정 가치.내다음 예,우리는있어통과하다전체 가치그만큼요구.
예:
using System namespace CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ( 'The value inside the show function'+ val)} static void Main (string [] args) {int val = 50 Edureka 프로그램 = new Edureka () Console.WriteLine ( '함수 호출 전 값'+ val) program.Show (val) Console.WriteLine ( '함수 호출 후 값'+ val)}}}//산출:
함수 호출 전 값 50
표시 기능 2500 내부의 값
함수 호출 후 값 50
참조로 전화
Call by Reference 메서드에서...에 심판 인수를 참조 유형으로 전달할 키워드입니다. 원래 값의 복사본이 아닌 인수 참조를 함수에 전달합니다. 전달 된 값의 변경은 영구적이며 수정 원래 변수 값.
예:
시스템 네임 스페이스 사용 CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ( 'The value inside the show function'+ val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ( 'Value before call the function'+ val) program.Show (ref val) Console.WriteLine ( 'Value after calling the function'+ val)}}}//산출:
함수 호출 전 값 50
표시 기능 2500 내부의 값
함수 2500 호출 후 값
출력 매개 변수
Out 매개 변수제공 밖 인수를 out-type으로 전달할 키워드입니다. 전달하기 전에 변수를 초기화 할 필요가 없다는 점을 제외하면 참조 유형과 같습니다. 우리는 사용해야합니다 밖 인수를 out-type으로 전달할 키워드입니다. 함수가 여러 값을 반환하기를 원할 때 유용합니다.
예:
시스템 네임 스페이스 사용 OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ( '변수 전달 전 값'+ val) program.Show (out val) Console.WriteLine ( '출력 변수 수신 후 값'+ val)}}}//산출:
변수 50을 전달하기 전 값
값
out 변수 25를받은 후
이제 객체 지향 프로그래밍으로 이동하겠습니다.
객체 지향 프로그래밍
객체 지향 프로그래밍 체계개념에 기반한 프로그래밍 패러다임입니다. 사물 포함하는 데이터 멤버 과 행동 양식 그들과 관련이 있습니다. 객체 지향 프로그래밍의 주요 목적은 프로그램의 유연성과 유지 관리 성을 높이는 것입니다.
객체 지향 프로그래밍의 특징 :
- 절차보다는 데이터에 더 중점을 둡니다.
- 프로그램은 개체로 나누어 져있어 작업하기 쉽습니다.
- 데이터 구조는 객체를 특성화하는 방식으로 설계됩니다.
- 작동하는 기능 의 위에객체의 데이터는 데이터 구조에 함께 배치됩니다.
- 데이터는 숨겨져 있으며 권한없이 외부 기능에서 액세스 할 수 없습니다.
- 객체 간의 통신은 함수의 도움으로 이루어질 수 있습니다.
- 새로운 데이터 및 기능 추가가 쉬워졌습니다.
- 프로그램 설계에서 상향식 접근 방식을 따릅니다.
C #의 객체 지향 패러다임은 다음과 같습니다.
C #의 열거 형
열거 형 또는 열거 in C #은 C # 프로그램의 전체 실행 중에 상수 값을 변경하지 않고 저장하는 데 사용됩니다. 그것계절, 일, 월, 크기 등과 같은 명명 된 상수 세트를 저장하는 데 사용됩니다.
예:
using System public class EnumExample {public enum week {월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ( 'Monday = {0}', x) Console.WriteLine ( 'Friday = {0}', y)}}//산출:
월요일 = 0
금요일 = 4
객체 지향 프로그래밍 접근 방식
객체 지향 프로그래밍 스타일은 아래에 규정 된 방법에 따라 달성 할 수 있습니다.
캡슐화
캡슐화 결합하는 방법입니다 행동 양식 그들과 함께 데이터 멤버.
예:
시스템 네임 스페이스 사용 Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ( 'Length : {0}', length) Console.WriteLine ( ' 너비 : {0} ', 너비) Console.WriteLine ('Area : {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}//산출:
길이 : 50
폭 : 35
지역 : 1750
추출
추출 방법입니다 숨는 장소 사용자가 필요한 정보 만 제공하여 복잡한 코딩 부분을 사용자에게 제공합니다.
예:
시스템 사용 public abstract class Shape {public abstract void draw ()} public class Rectangle : Shape {public override void draw () {Console.WriteLine ( 'drawing rectangle ...')}} public class Circle : Shape {public override void draw () {Console.WriteLine ( 'drawing circle ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}//산출:
직사각형 그리기 ...
원 그리기 ...
상호 작용
그만큼 상호 작용 Abstraction과 완전히 유사합니다. 인터페이스의 기능은 사용자에게 중요하지 않은 데이터를 숨기고 필요한 유일한 중요한 데이터를 제공하는 것입니다.
예:
시스템 공용 인터페이스 사용 Drawable {void draw ()} public class Rectangle : Drawable {public void draw () {Console.WriteLine ( 'drawing rectangle ...')}} public class Circle : Drawable {public void draw () {Console .WriteLine ( 'drawing circle ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}//산출:
직사각형 그리기 ...
원 그리기 ...
다형성
다형성의 조합입니다 '폴리' + '변경해' 많은 형태를 의미합니다. 그리스어입니다. 이는 코드 세그먼트가 여러 형태를 취할 수 있음을 의미합니다. 두 가지 유형의 다형성이 있습니다.
- 컴파일 시간 다형성
- 런타임 다형성
예:
using System public class Animal {public string color = 'white'} public class Dog : Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}//산출:
하얀
계승
계승 하나의 개체가 부모 개체의 모든 속성과 동작을 자동으로 획득하는 프로세스입니다. 다른 클래스에 정의 된 속성 및 동작을 재사용, 확장 또는 수정할 수 있습니다. 다른 클래스의 멤버를 상속하는 클래스가 호출됩니다. 파생 클래스 멤버가 상속 된 클래스를 베이스 수업. 파생 클래스는 기본 클래스에 대한 특수 클래스입니다.
단일 수준 상속의 예
using System namespace RectangleApplication {class Rectangle {protected double length protected double width public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ( 'Length : {0}', length) Console.WriteLine ( 'Width : {0}', width) Console.WriteLine ( 'Area : {0}', GetArea ())}} class Tabletop : Rectangle {private double cost public Tabletop (double l, double w) : base (l, w) {} public double GetCost () {double cost cost = GetArea () * 70 return cost} public void Display () {base.Display () Console .WriteLine ( 'Cost : {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}//산출:
길이 : 4.5
폭 : 7.5
면적 : 33.75
비용 : 2362.5
다단계 상속의 예
시스템 네임 스페이스 InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} public interface PaintCost {int getCost (int area)} 사용 class Rectangle : Shape, PaintCost {public int getArea () {return (너비 * 높이)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ( 'Total area : {0}', Rect.getArea ()) Console.WriteLine ( 'Total 페인트 비용 : $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}//산출:
총 면적 : 35
총 페인트 비용 : $ 2450
과부하
오버로딩은 동일한 이름을 사용하여 선언 된 두 개 이상의 멤버가있는 상황입니다. 같은 이름으로 둘 이상의 메서드를 선언 할 때도 오버로딩이 가능합니다. 둘 다의 예를 살펴 보겠습니다.
회원 과부하
예:
using System public class Edureka {public static int add (int a, int b) {return a + b} public static int add (int a, int b, int c) {return a + b + c}} public class TestMemberOverloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}//산출:
35
60
메서드 오버로딩
예:
using System public class Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}//산출:
35
33.699997
재정의
재정의는 자식 클래스가 부모가 정의하는 것과 동일한 메서드를 정의하는 상황입니다. 작은 예를 통해 이것을 이해합시다.
예:
using System public class Edureka {public virtual void eat () {Console.WriteLine ( 'Eating')}} public class Dog : Edureka {public override void eat () {Console.WriteLine ( 'Eating food')}} public class Overriding {public static void Main () {Dog d = new Dog () d.eat ()}}//산출:
음식을 먹고
네임 스페이스
그만큼 네임 스페이스 기본적으로 프로그램에있는 여러 클래스를 처리하는 데 사용됩니다. 네임 스페이스는 다양한 방식으로 사용할 수 있습니다.
- System.Console : 여기, 체계 네임 스페이스가 됨
- 네임 스페이스의 클래스에 액세스하려면 다음을 사용해야합니다. namespacename.classname.
- 우리는 사용 키워드도 있습니다.
예:
첫 번째 사용 시스템 사용 두 번째 네임 스페이스 사용 첫 번째 {public class Edureka {public void sayWelcome () {Console.WriteLine ( 'Welcome To Edureka')}}} 네임 스페이스 두 번째 {public class Happy_Learning {public void sayWishes () {Console.WriteLine ( ' Happy Learning ')}}} public class Namespace {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}//산출:
Edureka에 오신 것을 환영합니다
행복한 학습
파일 작업
그만큼 파일 작업 C #에서 사용할 수있는 것은 다음과 같습니다.
조작 기술 BinaryReader 바이너리 스트림에서 기본 데이터를 읽습니다. BinaryWriter 이진 형식으로 기본 데이터를 씁니다. BufferedStream 바이트 스트림을위한 임시 저장소입니다. 예배 규칙서 디렉토리 구조를 조작하는 데 도움이됩니다. DirectoryInfo 디렉토리에서 작업을 수행하는 데 사용됩니다. DriveInfo 드라이브에 대한 정보를 제공합니다. 파일 파일 조작에 도움이됩니다. FileInfo 파일에 대한 작업을 수행하는 데 사용됩니다. FileStream 파일의 모든 위치에서 읽고 쓰는 데 사용됩니다. MemoryStream 메모리에 저장된 스트리밍 데이터에 대한 임의 액세스에 사용됩니다. 통로 경로 정보에 대한 작업을 수행합니다. StreamReader 바이트 스트림에서 문자를 읽는 데 사용됩니다. StreamWriter 스트림에 문자를 쓰는 데 사용됩니다. StringReader 문자열 버퍼에서 읽는 데 사용됩니다. StringWriter 문자열 버퍼에 쓰는 데 사용됩니다. FileMode
그만큼 FileMode 여러 파일 열기 방법을 정의하는 열거 자입니다. FileMode Enumerator의 멤버는 다음과 같이 설명됩니다.
- 추가 : 기존 파일을 열고 커서를 파일 끝에 놓거나 파일이없는 경우 파일을 만듭니다.
- 창조하다: 새 파일을 생성하도록 설계되었습니다.
- 새로 만들기 : 새 파일을 생성하도록 운영 체제에 지정하도록 설계되었습니다.
- 열다: 기존 파일을 열도록 설계되었습니다.
- OpenOrCreate : 파일이있는 경우 열어야하는 운영 체제를 지정하고 그렇지 않으면 새 파일을 만들어야합니다.
- 자르기 : 자르기 기존 파일을 열고 크기를 0 바이트로 자릅니다.
FileAccess
FileAccess 열거자는 특정 파일에 대한 액세스 권한을 얻는 데 사용됩니다. 다음 멤버가 있습니다.
- 읽다
- 쓰다
- 읽기 쓰기
파일 공유
그만큼 파일 공유 열거자는 특정 파일을 공유하는 데 사용됩니다. 다음 멤버가 있습니다.
- 상속 가능 : Inheritable을 사용하면 파일 핸들이 상속을 자식 프로세스에 전달할 수 있습니다.
- 없음 : 현재 파일 공유를 거부하지 않음
- 읽다: 읽기를 사용하면 파일을 읽을 수 있습니다.
- 읽기 쓰기 : ReadWrite를 사용하면 파일을 읽고 쓸 수 있습니다.
- 쓰다: 쓰기를 사용하면 쓰기 위해 파일을 열 수 있습니다.
이벤트
이벤트는 일반적으로 사용자가 생성하는 작업으로 알려져 있습니다. 마우스 클릭 일 수도 있고 키보드에서 한 번의 키 입력일 수도 있습니다. 마찬가지로 C # 프로그램에도 이벤트가 있습니다. 이벤트 생성자는 발행자 이벤트의 수신자는 구독자.
발행자
에 발행자 이벤트 및 대리자의 정의를 포함합니다. 그만큼 이벤트 대리인 연관은이 객체에 정의됩니다. ㅏ 발행자 클래스 개체는 이벤트를 호출하고 다른 개체에 알립니다.
구독자
에 구독자 이벤트를 수락하고 이벤트 핸들러. 그만큼 대리자 게시자 클래스에서 / event 메소드를 호출합니다. 매니저 구독자 클래스의.
예:
using System namespace Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string username) {return 'Welcome To Edureka . '+ 사용자 이름} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent ('Happy Learning ') Console.WriteLine (result)}}}//산출:
Edureka에 오신 것을 환영합니다. 행복한 학습
제네릭
제네릭 클래스의 멤버와 메서드에 자리 표시자를 제공하는 개념입니다. 실행 시간. Generics를 다음과 같이 정의 할 수 있습니다. 대괄호. 다음 예를 살펴 보겠습니다.
클래스의 제네릭
using System namespace Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ( 'This message is from generic class' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ( 'E')}}}//산출:
이 메시지는 일반 클래스에서 온 것입니다.
123
IS
메서드의 제네릭
시스템 네임 스페이스 사용 Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ( 'This 메시지는 일반 메서드에서 가져옴 ') genC.Show (321) genC.Show ('H ')}}}//산출:
이 메시지는 일반 메소드에서 온 것입니다.
321
H
대표자
그만큼 대리자 메서드에 대한 참조 역할을합니다. 기본적으로 그것은 기능 포인터 C와 C ++에서하지만 훨씬 더 좋고 형식에 안전합니다. 대표자 정적 방법 메서드 만 캡슐화합니다. 대리자가 예 method는 메서드와 인스턴스를 모두 캡슐화합니다. 델리게이트를 가장 잘 사용하는 것은 행사.
예:
using System delegate int Calculator (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ( 'After calculator 하나의 대리자, 새 숫자는 다음과 같습니다. '+ getNumber ()) c2 (3) Console.WriteLine ('계산기 두 대리자 후 새 숫자는 '+ getNumber ())}}//산출:
계산기 한 명의 대리인 후 새 번호는 다음과 같습니다. 45
계산기 2 대리자 후 새 번호는 다음과 같습니다. 135
반사
리플렉션은 런타임에서 메타 데이터를 가져 오는 데 필요합니다. 참조는 System.Reflection 네임 스페이스. 실행하려면 다음 클래스가 필요합니다.
- 유형
- MemberInfo
- ConstructorInfo
- MethodInfo
- FieldInfo
- PropertyInfo
- TypeInfo
- EventInfo
- 기준 치수
- 어셈블리
- AssemblyName
- 바늘
유형 클래스
C # 유형 클래스는 클래스 유형, 인터페이스 유형, 열거 유형, 배열 유형, 값 유형에 대한 유형 선언을 나타냅니다.
유형 속성
Type 클래스의 중요한 속성 목록은 다음과 같습니다.
특성 기술 어셈블리 이 형식에 대한 Assembly를 가져옵니다. AssemblyQualifiedName 이 형식의 어셈블리 정규화 된 이름을 가져옵니다. 속성 유형과 관련된 속성을 가져옵니다. BaseType 기본 또는 부모 유형을 가져옵니다. FullName 형식의 정규화 된 이름을 가져옵니다. IsAbstract 유형이 Abstract인지 확인하는 데 사용됩니다. IsArray 유형이 Array인지 확인하는 데 사용됩니다. IsClass 유형이 Class인지 확인하는 데 사용됩니다. IsEnum 유형이 Enum인지 확인하는 데 사용됩니다. IsInterface 유형이 인터페이스인지 확인하는 데 사용됩니다. IsNested 유형이 Nested인지 확인하는 데 사용됩니다. IsPrimitive 유형이 Primitive인지 확인하는 데 사용됩니다. IsPointer 유형이 포인터인지 확인하는 데 사용됩니다. IsNotPublic 유형이 공용이 아닌지 확인하는 데 사용됩니다. IsPublic 유형이 공용인지 확인하는 데 사용됩니다. IsSealed 유형이 Sealed인지 확인하는 데 사용됩니다. IsSerializable 유형이 Serializable인지 확인하는 데 사용됩니다. MemberType 유형이 중첩 유형의 구성원 유형인지 확인하는 데 사용됩니다. 기준 치수 유형의 모듈을 가져옵니다. 이름 유형의 이름을 가져옵니다. 네임 스페이스 형식의 네임 스페이스를 가져옵니다.
특성 기술 GetConstructors () Type에 대한 모든 공용 생성자를 반환합니다. GetConstructors (BindingFlags) 지정된 BindingFlags를 사용하여 Type에 대한 모든 생성자를 반환합니다. GetFields () 유형에 대한 모든 공용 필드를 반환합니다. GetFields (BindingFlags) 지정된 BindingFlags를 사용하여 Type에 대한 모든 공용 생성자를 반환합니다. GetMembers () Type에 대한 모든 공용 멤버를 반환합니다. GetMembers (BindingFlags) 지정된 BindingFlags가있는 Type의 모든 멤버를 반환합니다. GetMethods () Type에 대한 모든 공용 메서드를 반환합니다. GetMethods (BindingFlags) 지정된 BindingFlags를 사용하여 Type에 대한 모든 메서드를 반환합니다. GetProperties () Type에 대한 모든 공용 속성을 반환합니다. GetProperties (BindingFlags) 지정된 BindingFlags가있는 Type의 모든 속성을 반환합니다. GetType () 현재 유형을 가져옵니다. GetType (문자열) 주어진 이름에 대한 유형을 가져옵니다. 반사 예 :
유형 가져 오기
예:
시스템 사용 public class GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}//산출:
System.Int32
조립 받기
예:
System.Reflection 사용 시스템 사용 public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}//산출:
System.Private.CoreLib, 버전 = 4.0.0.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e
목록 정렬 C ++인쇄 유형 정보
예:
System.Reflection을 사용하여 시스템 사용 public class PrintType {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}//산출:
진실
그릇된
그릇된
인쇄 생성자
예:
System.Reflection을 사용하는 시스템 사용 public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ( 'Constructors of {0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ci의 ConstructorInfo c) {Console.WriteLine (c)}}}//산출:
System.String 유형의 생성자 ...
Void .ctor (Char [])
Void .ctor (Char [], Int32, Int32)
Void .ctor (Char *)
Void .ctor (Char *, Int32, Int32)
Void .ctor (SByte *)
Void .ctor (SByte *, Int32, Int32)
Void .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Void .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])
인쇄 방법
예:
System.Reflection을 사용하여 시스템 사용 public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ( 'Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (ci의 MethodInfo m) {Console.WriteLine (m)}}}//산출:
System.String 형식의 메서드 ...
System.String Replace (System.String, System.String)
System.String [] Split (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] 분할 (Char [])
System.String [] 분할 (Char [], Int32)
System.String [] Split (Char [], System.StringSplitOptions)
System.String [] Split (Char [], Int32, System.StringSplitOptions)
System.String [] Split (System.String, System.StringSplitOptions)
System.String [] Split (System.String, Int32, System.StringSplitOptions)
System.String [] Split (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......
인쇄 필드
예:
System.Reflection을 사용하는 시스템 public class PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ( 'Fields of {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (CI의 FieldInfo f) {Console.WriteLine (f)}}}//산출:
System.String 유형의 필드 ...
System.String 비어 있음
이제 몇 가지 고급 C # 프로그래밍 개념으로 이동하겠습니다.
고급 C # 개념
익명 기능
특정 이름이없는 함수를 호출합니다. 익명 기능. C #에서 사용할 수있는 익명 함수에는 두 가지 유형이 있습니다.
- 람다 식
- 익명 메서드
예:
using System namespace LambdaExpressions {class Edureka {delegate int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ( 'Square :'+ 제이) } } }//산출:
정사각형 : 625
익명 메서드
그만큼 익명의 방법 같은 기능을 제공합니다 람다 표현, 매개 변수 목록을 무시할 수 있다는 점을 제외하면
예:
시스템 네임 스페이스 사용 AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ( 'This is anonymous function')} fun ()}}}//산출:
이것은 익명의 기능입니다
다중 스레딩
멀티 스레딩은 여러 스레드가 생성되고 서로 다른 작업에 할당되는 프로세스입니다. 이렇게하면 한 번에 여러 작업을 실행하여 시간을 절약 할 수 있습니다. 멀티 스레딩 클래스는 System.Threading 네임 스페이스.
System.Threading 네임 스페이스
그만큼 System.Threading 네임 스페이스에는 멀티 스레딩을 용이하게하는 클래스와 인터페이스가 포함되어 있습니다. 스레드 리소스를 동기화하는 클래스를 제공합니다. 일반적으로 사용되는 클래스 목록은 다음과 같습니다.
- 실
- 뮤텍스
- 시간제 노동자
- 감시 장치
- 신호기
- ThreadLocal
- ThreadPool
- 휘발성 물질
프로세스 및 스레드
프로세스는 실제로 신청 그리고 그것은 헤비급 선수 구성 요소. 반면에 스레드는 하나의 단일 기준 치수 전체 응용 프로그램의. 그것은 경량 프로세스에 비해
스레드의 수명주기
각 스레드에는 라이프 사이클이 있습니다. 스레드의 수명주기는 System.Threading.Thread 클래스에 정의되어 있습니다. 다음은 모든 스레드의 라이프 사이클 단계입니다.
- 시작되지 않음
- 실행 가능 (실행 가능)
- 달리는
- 실행할 수 없음
- 죽은
Thread 클래스는 다음과 같은 속성과 메서드를 제공합니다.
스레드 속성
특성 기술 CurrentThread 현재 실행중인 스레드의 인스턴스를 반환합니다. 살아있다 현재 스레드가 살아 있는지 여부를 확인합니다. IsBackground 현재 스레드의 값을 가져 오거나 설정하려면 백그라운드에 있는지 여부입니다. ManagedThreadId 현재 관리되는 스레드의 고유 ID를 가져 오는 데 사용됩니다. 이름 현재 스레드의 이름을 가져 오거나 설정하는 데 사용됩니다. 우선 순위 현재 스레드의 우선 순위를 가져 오거나 설정하는 데 사용됩니다. ThreadState 스레드 상태를 나타내는 값을 반환하는 데 사용됩니다. 스레드 방법
방법 기술 낙태() 스레드를 종료하는 데 사용됩니다. ThreadAbortException을 발생시킵니다. 일시 정지() WaitSleepJoin 상태에있는 스레드를 인터럽트하는 데 사용됩니다. 어울리다() 이 스레드가 종료 될 때까지 모든 호출 스레드를 차단하는 데 사용됩니다. ResetAbort () 현재 스레드에 대한 중단 요청을 취소하는 데 사용됩니다. 이력서() 일시 중단 된 스레드를 다시 시작하는 데 사용됩니다. 구식입니다. 수면 (Int32) 지정된 밀리 초 동안 현재 스레드를 일시 중단하는 데 사용됩니다. 스타트() 스레드의 현재 상태를 Runnable로 변경합니다. 매달다() 일시 중단되지 않은 경우 현재 스레드를 일시 중단합니다. 구식입니다. 수율() 현재 스레드의 실행을 다른 스레드에 양보하는 데 사용됩니다. 메인 스레드 예
System.Threading을 사용하는 시스템 사용 public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread'Console.WriteLine (t.Name)}}//산출:
MainThread
예외 처리
그만큼 예외 런타임에 프로그램에서 발생한 오류입니다. 프로그램 예외를 무료로 만들기 위해 예외 처리를 수행합니다.
예외 기술 System.DivideByZeroException 숫자를 0으로 나누면 오류가 발생합니다.
System.NullReferenceException null 개체를 참조하여 생성 된 오류를 처리합니다.
System.InvalidCastException 유효하지 않은 유형 변환으로 생성 된 오류를 처리합니다.
System.IO.IOException 입력 / 출력 오류를 처리합니다. System.FieldAccessException 유효하지 않은 개인 / 보호 액세스로 인해 오류가 생성되었습니다. C #에서는 4 개의 키워드를 사용하여 예외 처리:
예:
- 시험
- 잡기
- 마지막으로
- 던지다
using System public class EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ( 'This message is from catch block')}}//산출:
System.DivideByZeroException : 0으로 나누려고했습니다.
F : C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs : line 10의 ExExaEdurekample.Main (String [] args)
이 메시지는 catch 블록에서 보낸 것입니다.
사용자 정의 된 예외 예
시스템 공용 클래스 InvalidAgeException 사용 : Exception {public InvalidAgeException (String message) : base (message) {}} public class Customized {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } }//산출:
InvalidAgeException : 죄송합니다. 연령은 18 세 이상이어야합니다.
F : C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs : line 18의 Customized.validate (Int32 age)에서
F : C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs : line 23의 Customized.Main (String [] args)에서
캐치 블록이 현재 실행 중입니다.
마지막으로 블록 예
using System public class FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} finally {Console .WriteLine ( 'Finally block is execution')} Console.WriteLine ( 'Catch block is execution')}}//산출:
System.DivideByZeroException : 0으로 나누려고했습니다.
FinalExecption.Main (String [] args) in F : C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs : line 10
마지막으로 블록이 실행됩니다.
캐치 블록이 실행됩니다.
시스템 예외 서명
[SerializableAttribute] [ComVisibleAttribute (true)] 공용 클래스 SystemException : 예외시스템 예외 생성자
빌더 기술 SystemException () SystemException 클래스의 새 인스턴스를 초기화하는 데 사용됩니다. SystemException (SerializationInfo, StreamingContext)
직렬화 된 데이터로 SystemException 클래스의 새 인스턴스를 초기화하는 데 사용됩니다. SystemException (문자열) 지정된 오류 메시지로 SystemException 클래스의 새 인스턴스를 초기화하는 데 사용됩니다. SystemException (문자열, 예외) 지정된 오류 메시지와이 예외의 원인 인 내부 예외에 대한 참조를 사용하여 SystemException 클래스의 새 인스턴스를 초기화하는 데 사용됩니다. 시스템 예외 속성
특성 기술 데이터 예외에 대한 추가 사용자 정의 정보를 제공하는 키 / 값 쌍 모음을 가져 오는 데 사용됩니다. HelpLink 이 예외와 관련된 도움말 파일에 대한 링크를 가져 오거나 설정하는 데 사용됩니다. HResult 특정 예외에 할당 된 코드화 된 숫자 값인 HRESULT를 가져 오거나 설정하는 데 사용됩니다. InnerException 현재 예외를 발생시킨 Exception 인스턴스를 가져 오는 데 사용됩니다. 메시지 현재 예외를 설명하는 메시지를 가져 오는 데 사용됩니다. 출처 오류를 일으키는 응용 프로그램의 이름을 가져 오거나 설정하는 데 사용됩니다. StackTrace 호출 스택에서 즉시 프레임의 문자열 표현을 가져 오는 데 사용됩니다. TargetSite 현재 예외를 발생시키는 메소드를 가져 오는 데 사용됩니다. 시스템 예외 방법
행동 양식 기술 Equals (객체) 지정된 개체가 현재 개체와 같은지 확인하는 데 사용됩니다. Finalize () 리소스를 해제하고 정리 작업을 수행하는 데 사용됩니다. GetBaseException () 루트 예외를 얻는 데 사용됩니다. GetHashCode () 해시 코드를 얻는 데 사용됩니다. GetObjectData (SerializationInfo, StreamingContext)
개체 데이터를 가져 오는 데 사용됩니다. GetType () 현재 인스턴스의 런타임 유형을 가져 오는 데 사용됩니다. MemberwiseClone () 현재 Object의 얕은 복사본을 만드는 데 사용됩니다. ToString () 현재 예외의 문자열 표현을 만들고 반환하는 데 사용됩니다. 시스템 예외 예
시스템 네임 스페이스 CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}//산출:
System.IndexOutOfRangeException : 인덱스가 배열 범위를 벗어났습니다.
CSharpProgram.SystemExceptionExample.Main (String [] args) in F : C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs : line 11
동기화
멀티 스레딩 프로그램에서 스레드가 허용됩니다.모든 리소스에 액세스하려면지정된 실행시각. 스레드는 리소스를 공유하고 비동기 적으로 실행됩니다. 공유 리소스 (데이터)에 액세스중요한 작업이 될 수 있습니다일반적으로멈출 수있다시스템.우리는 그것에 영향을 미치는 경향이 있습니다동기 방식으로 스레드를 생성하여.
동기화가없는 예
System.Threading을 사용하는 시스템 사용 클래스 Edureka {public void PrintTable () {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } }//산출:
하나
하나
2
2
삼
삼
4
4
5
5
6
6
7
7
8
8
9
9
10
10
동기화 예
System using System.Threading class Edureka {public void PrintTable () {lock (this) {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } }//산출:
하나
2
삼
4
5
6
7
8
9
10
하나
2
삼
4
5
6
7
8
9
10
새로운 기능
Microsoft는 C # 언어에 많은 최신 기능을 추가했으며 그중 일부는 아래에 언급되어 있습니다.
C # 6.0
- 정적 지시문 사용
- 예외 필터
- 캐치 / 파이널 블록에서 대기
- 자동 속성 이니셜 라이저
- getter 전용 속성의 기본값
- 표현 체 멤버
- 널 전파자
- 문자열 보간
- Nameof 연산자
- 사전 이니셜 라이저
- 서비스로서의 컴파일러 (Roslyn)
C # 7.0
- 패턴 매칭
- 튜플
- 해체
- 지역 기능
- 숫자 구분자
- 이진 리터럴
- 참조 반환 및 지역
- 식 본문 생성자 및 종료 자
- 식 본문 게터 및 세터
- 아웃 변수
- 일반화 된 비동기 반환 유형
C # 7.1
- 비동기 메인
- 기본 표현식
C # 기반 인터뷰 질문
C # 프로그래밍 언어를 기반으로 한 중요한 인터뷰 질문은이 업데이트에서 찾을 수 있습니다. .
이것으로이 'C # Tutorial'기사를 마칩니다. 데이터 구조, 구문, 기능 및이를 사용하여 수행되는 작업의 중요성을 이해 하셨기를 바랍니다. 이제 이것을 통해 C # 프로그래밍의 기본 사항을 이해했습니다.C # 튜토리얼, 확인 제공되는 훈련 Java와 같은 많은 기술에 대한 Edureka의 봄 그리고 많은또한 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사가 우리에게 질문? 이 'C # Tutorial'블로그의 댓글 섹션에 언급하시면 가능한 한 빨리 답변을 드리겠습니다.