Hướng dẫn C #: Các nguyên tắc cơ bản bạn cần để thành thạo C #



Bài viết về Hướng dẫn C # này sẽ giúp bạn có kiến ​​thức chi tiết về ký quỹ C # cùng với các ví dụ thời gian thực để hiểu rõ hơn.

C # là ngôn ngữ lập trình đa năng và mạnh mẽ được phát triển bởi Tập đoàn Microsoft vào năm 2000 như một đối thủ cạnh tranh chết người với Java. Nó phổ biến nhất và là ngôn ngữ lập trình thống trị khi nói đến cả phát triển web cũng như phát triển ứng dụng máy tính để bàn.

Trong Hướng dẫn C # này, chúng ta sẽ tìm hiểu các khái niệm sau.





Kiến thức cơ bản về C #

Giới thiệu về ngôn ngữ lập trình C #

Trở lại đầu những năm 90, Java là ngôn ngữ lập trình hàng đầu để phát triển web, phát triển ứng dụng máy tính để bàn và nhiều lĩnh vực khác. Microsoft muốn đưa ra một đối thủ cạnh tranh với nhiều tính năng tiên tiến có thể bỏ xa Java.



C#-Tutorial-hejlsberg_bio

Đó là vào năm 2000, Anders Hejlsberg và nhóm Microsoft của anh ấy đã đưa ra ý tưởng về C # thường được gọi là C-Sharp. Sáng kiến ​​này đã được Tổ chức Tiêu chuẩn Quốc tế chấp thuận (CHÍNH) và Hiệp hội các nhà sản xuất máy tính Châu Âu (ECMA). và cuối cùng, C # bước vào thế giới phát triển phần mềm.

Các tính năng của ngôn ngữ lập trình C #



  • Ngôn ngữ lập trình hướng đối tượng

Phương pháp lập trình hướng đối tượng là điều làm cho C # sharp trở thành ngôn ngữ lập trình thân thiện với lập trình viên nhất và dễ phát triển và duy trì.

  • Ngôn ngữ An toàn Loại

Ý nghĩa của Type-Safe là trình biên dịch sẽ chỉ được cấp quyền truy cập vào vị trí bộ nhớ có quyền thực thi. Tính năng này cải thiện độ an toàn của mã lên cấp số nhân.

  • Khả năng tương tác

Tính năng Khả năng tương tác làm cho C # đủ khả năng để làm mọi thứ có nguồn gốc từ C ++ theo cách hiệu quả hơn có thể vượt trội hơn chính C ++.

  • Thư viện phong phú

C # cung cấp quyền truy cập vào nhiều thư viện tích hợp cung cấp các chức năng được lập trình trước để giảm thời gian dành cho quá trình phát triển.

  • Có thể mở rộng và có thể cập nhật

C # được thiết kế để vượt trội hơn so với các ngôn ngữ lập trình khác. Do đó, nó luôn mở cửa để cập nhật và nó giữ cho mình khả năng mở rộng cao với các tính năng của nó.

  • Định hướng thành phần

Các nhà phát triển tại Microsoft đã sử dụng phương pháp dựa trên thành phần để phát triển C #. Đây là phương pháp phát triển chủ yếu nhất để giữ cho C # có khả năng mở rộng và cập nhật cao.

  • Ngôn ngữ có cấu trúc

Cách tiếp cận Lập trình có cấu trúc được ưa thích hơn trong vòng đời phát triển phần mềm vì nó trở nên dễ dàng trong việc phát triển biên dịch và triển khai phần mềm so với cách tiếp cận lập trình hướng thủ tục.

  • Nhanh

Lập trình C # diễn ra nhanh hơn trong quá trình biên dịch và thực thi so với C ++ và các ngôn ngữ lập trình khác.

Cài đặt

Nó được chứng minh rằng Microsoft Visual Studio là trình soạn thảo tốt nhất trong lớp về Lập trình C #. Chúng tôi sẽ cài đặt và thiết lập Microsoft Visual Studio để thực thi Chương trình C # của chúng tôi bằng cách làm theo các bước được đề cập bên dưới:

Bước 1 : Tải xuống Microsoft Visual Studio

Google cho phiên bản mới nhất của Visual Studio và tải xuống Tải về gửi vào hệ thống cục bộ của bạn và sau đó chạy tệp trình cài đặt như một người quản lý.

Bước 2: Chọn Gói phát triển máy tính để bàn .NET

Sau khi bạn chạy Trình cài đặt, Trình chỉnh sửa Visual Studio sẽ được tải xuống thành công vào hệ thống cục bộ của bạn, Sau đó, một hộp thoại sẽ được hiển thị trên màn hình máy tính của bạn yêu cầu đối thủ gói cụ thể bạn cần trong hệ thống của mình. Tại đây, bạn cần chọn .NET Desktop Development gói hàng.

Bước 3: Đặt Môi trường C #

Sau khi gói của bạn cho Phát triển .NET được tải xuống, sau đó một hộp thoại khác sẽ hiển thị trên màn hình của bạn yêu cầu môi trường phát triển bạn đang tìm kiếm. Ở đây, bạn cần phải chọn môi trường cho C #.

Bước 4: Tạo dự án đầu tiên của bạn

Một khi môi trường được thiết lập, tất cả các bạn đều tốt để đi. Khởi động Visual Studio của bạn và chọn tạo dự án mới trong hộp thoại được hiển thị.

Bạn sẽ được chuyển hướng đến hộp thoại tiếp theo và ở đó bạn cần chọn Thư viện lớp là Tiêu chuẩn .NET như hình bên dưới.

cách đánh máy trong java

Trong hộp thoại tiếp theo, bạn sẽ được yêu cầu Định cấu hình dự án của bạn . Định cấu hình nó và bây giờ bạn đang ở trong Trình chỉnh sửa. Viết chương trình đầu tiên của bạn và chạy nó. Đầu ra sẽ được hiển thị thành công trên Dấu nhắc lệnh.

using System class Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}

// Đầu ra:

Hãy để chúng tôi thực hiện Chương trình C # đầu tiên của chúng tôi.

Cấu trúc chương trình C #

Bây giờ chúng ta đã thực hiện Chương trình C # đầu tiên của mình, chúng ta hãy hiểu cấu trúc của nó một cách chi tiết. Một chương trình C # đơn giản có các phần sau.

using System namespace ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

// Đầu ra:

Chào mừng bạn đến với Edureka !, Chúc bạn học vui vẻ ..!

  • lớp học: lớp có thể được định nghĩa chung là từ khóa được sử dụng để định nghĩa một lớp trong Chương trình C #.
  • Edureka: Nó là tên của Lớp học. Lớp thường được coi là một bản thiết kế lưu trữ các thành viên và các phương thức liên quan đến lớp.
  • Chủ yếu: Về cơ bản là phương pháp chính của toàn bộ Chương trình C #, Nó hoạt động như một cửa ngõ để điều khiển vào chương trình. Nó được thực thi trước khi bất kỳ phương thức nào khác của chương trình được thực thi.
  • vô hiệu: Đoạn mã này được chỉ định cho loại trả lại của phương pháp. Nó có thể là bất kỳ Datatype nào khác với void. Không có nghĩa là phương thức không có bất kỳ dữ liệu nào được trả về từ nó.
  • tĩnh: Đây là một từ khóa trong đó cho biết các thành viên dữ liệu được khai báo là tĩnh và một bộ nhớ dành riêng được cấp cho các thành viên được khai báo.
  • Chuỗi [] args: Nó giống với các đối số dòng lệnh mà chúng ta sử dụng trong chương trình của mình. Trong khi chúng tôi thực hiện chương trình của mình, về cơ bản chúng tôi đã vượt qua một số tranh luận, sẽ được chương trình chấp nhận vì tuyên bố này.
  • System.Console.WriteLine (“Chào mừng bạn đến với Edureka !, Chúc bạn học vui vẻ ..!”) Đây, Hệ thống không gian tên. Bàn điều khiểnđó có phải là danh mục được vạch ratrong không gian tên Hệ thống. Các WriteLine () nó có phải làtĩnhkỹ thuậtcủa Consolethể loại được sử dụng để viết ravăn bản trên bảng điều khiển.

Bây giờ, chúng ta hãy tìm hiểu các Datatypes có trong C #.

Loại dữ liệu

Các kiểu dữ liệu trong C # được chia thành ba loại được mô tả dưới đây.

Kiểu dữ liệu giá trị

Các Kiểu dữ liệu giá trị nằm ở System.ValueType Thư viện và luôn sẵn sàng để được truy cập trực tiếp và các biến có thể được gán trực tiếp cho một giá trị cụ thể. Các kiểu dữ liệu giá trị được phân loại thành hai loại như được hiển thị bên dưới:

  • Các kiểu dữ liệu được xác định trước
  • Kiểu dữ liệu do người dùng xác định

Kiểu dữ liệu được xác định trước: Đây là những cái mà chúng ta thường sử dụng trong lập trình hàng ngày. Các kiểu dữ liệu này được xác định trước bởi các nhà phát triển ngôn ngữ và luôn sẵn sàng để sử dụng cho các lập trình viên.

Thí dụ:

int, float, char, short double, v.v.

Kiểu dữ liệu do người dùng xác định: Có những tình huống mà chúng ta có thể cần lưu trữ các giá trị khác nhau từ Kiểu dữ liệu vào một biến duy nhất. Trong những trường hợp này, Các kiểu dữ liệu được xác định trước không chỉ là đủ. Đã xác định người dùng Kiểu dữ liệu giống như kiểu dữ liệu có thể tùy chỉnh cho người dùng.

Ví dụ: Structure, Enum

Loại dữ liệu Phạm vi bộ nhớ được phân bổ Dung lượng bộ nhớ
ký char -128 đến 127 1 Byte
ký tự không dấu 0 đến 127 1 Byte
char -128 đến 127 1 Byte
ký ngắn -32,768 đến 32,767 2 byte
không dấu ngắn 0 đến 65,535 2 byte
ngắn -32,768 đến 32,767 2 byte
int đã ký -2.147.483.648 đến -2.147.483.647 4 byte
int không dấu 0 đến 4,294,967,295 4 byte
int -2.147.483.648 đến -2.147.483.647 4 byte
ký lâu -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 8 byte
không ký lâu 0 đến 18.446.744.073.709.551.615 8 byte
Dài -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 8 byte
Phao nổi 1,5 * 10-45 - 3,4 * 1038, (độ chính xác 7 chữ số) 4 byte
gấp đôi 5,0 * 10-324 - 1,7 * 10308, (độ chính xác 15 chữ số) 8 byte
thập phân -7,9 * 10-28 - 7,9 * 1028, (độ chính xác 28 chữ số) 16 byte


Loại dữ liệu con trỏ

Loại con trỏ là một kiểu dữ liệu đơn giản. Chức năng của nó hoàn toàn tương tự như Con trỏ trong C. Chúng được thiết kế để lưu trữ địa chỉ của một con trỏ khác.

float * ptr

Tham khảo kiểu dữ liệu

Tên là tự giải thích. Các Tham khảo kiểu dữ liệu thực sự không lưu trữ các biến, thay vào đó, chúng lưu trữ giá trị tham chiếu cho biến cụ thể đó. Nói cách khác, chúng lưu trữ địa chỉ của biến thực tế.

Các biến tham chiếu được phân loại thành ba loại khác nhau như được đề cập bên dưới:

  • Loại đối tượng

Kiểu dữ liệu đối tượng có sẵn trong System.Object Lớp học.Đối tượngcác loạicó thểđược giao chogiá trị củacác loại khác,tài liệu tham khảocác loại, xác định trước, người dùng xác địnhcác loại. Nhưng trước đósự phân cônggiá trị, nó yêu cầu kiểu sự chuyển đổi.

object abc abc = 50 // cái này được gọi là quyền anh
  • Loại động

Các biến Kiểu động được thiết kế để lưu trữ hầu hết các loại giá trị. Nó được gọi là Loại động vì việc kiểm tra loại giá trị diễn ra trong thời gian chạy

động x = 10
  • Loại chuỗi

Loại chuỗi có sẵn trong System.String lớp học. Loại Chuỗi được thiết kế để lưu trữ các ký tự chuỗi. String Literals được lưu trữ ở hai dạng tronghai hình thức

    • trích dẫn
    • @ được trích dẫn.
Chuỗi S = 'Edureka'
  • Các @ trích dẫn chuỗi ký tự trông giống như
@ 'Edureka'

Bây giờ chúng ta hãy hiểu các biến.

Biến

Biến là tên được phân bổ cho vị trí bộ nhớ lưu trữ dữ liệu nhất định do người dùng cung cấp và dữ liệu đó có thể dễ dàng truy cập bằng cách sử dụng tên biến. Có năm loại biến có sẵn trong C #

Kiểu Thí dụ
Vô giá trị Dữ liệu rỗng
Boolean Đúng và sai
Số nguyên Int, Char, Byte, Ngắn, Dài
Phao nổi Phao và Đôi
Thập phân Thập phân

Thí dụ:

int a, b double x float p char abc

Các quy tắc cần tuân theo để khai báo biến trong C #

  • Một biến có thể bao gồm bảng chữ cái, chữ số và dấu gạch dưới.
  • Tên biến chỉ có thể bắt đầu bằng bảng chữ cái hoặc dấu gạch dưới.
  • Các biến không thể bắt đầu bằng một chữ số hoặc ký tự đặc biệt.
  • Khoảng trắng không được phép ở giữa tên biến.
  • Các từ khóa dành riêng bị hạn chế sử dụng làm tên biến.

Các nhà khai thác

Toán tử có thể được định nghĩa là một ký hiệu đặc biệt giải thích máy tính thực hiện một phép toán cụ thể là một phép toán logic dựa trên một tập hợp các biến. C # bao gồm một loạt các Toán tử được đề cập như dưới đây.

  • Toán tử số học
  • Toán tử quan hệ
  • Toán tử logic
  • Toán tử Bitwise
  • Người điều hành nhiệm vụ

Toán tử số học

Nhà điều hành Thí dụ Sự miêu tả
+ A + B Thêm hai toán hạng
- A - B Trừ hai toán hạng
* A * B Nhân hai Toán hạng
/ A / B Chia hai toán hạng
% A% B Phần còn lại của hai toán hạng
++ A ++ Hoạt động gia tăng
- ĐẾN- Hoạt động giảm dần

Toán tử quan hệ

Nhà điều hành Thí dụ Sự miêu tả
== A == B Đúng, nếu cả hai toán hạng bằng nhau, Khác Sai
! = A! = B Đúng, nếu cả hai toán hạng không bằng nhau, Khác Sai
> A> B Đúng, nếu A Lớn hơn, Khác Sai
< ĐẾN Đúng, nếu B Lớn hơn, Khác Sai
> = A> = B Đúng, nếu A lớn hơn hoặc bằng, Khác Sai
<= ĐẾN<= B Đúng, id B là Lớn hơn bằng, Khác Sai

Toán tử logic

Nhà điều hành Thí dụ Sự miêu tả
&& A && B Đúng, nếu cả hai toán hạng đều đúng, Khác Sai
|| A || B Đúng, nếu một trong các toán hạng là đúng, Khác Sai
! A! B Đảo ngược trạng thái logic của toán hạng

Toán tử Bitwise

ĐẾN B A & B A | B A ^ B
một một một một 0
một 0 0 một một
0 một 0 một một
0 0 0 0 0
Nhà điều hành Thí dụ Sự miêu tả
~ (~ A) Toán tử bổ sung của Binary One là một bậc và có tác dụng ‘lật’ các bit.
<< ĐẾN<<2 Toán tử dịch chuyển trái nhị phân. Giá trị toán hạng bên trái được di chuyển sang trái bằng số bit được chỉ định bởi toán hạng bên phải.
>> A >> 2 Toán tử Shift phải nhị phân. Giá trị của toán hạng bên trái được di chuyển sang phải bằng số bit được chỉ định bởi toán hạng bên phải.

Người điều hành nhiệm vụ

Nhà điều hành Thí dụ Sự miêu tả
= A = B + C A = B + C, B + C được gán cho A
+ = A + = B A = A + B, A + B được gán cho A
- = A - = B A = A-B, A-B được gán cho A
* = A - = B A = A * B, A * B được gán cho A
/ = A / = B A = A / B, A / B được gán cho A
% = A% = B A = A% B, A% B được gán cho A
<<= ĐẾN<<= 2 Chuyển sang trái và toán tử phân công
>> = A >> = 2 Người vận hành Chuyển quyền và Chuyển nhượng
& = A & = 2 Bitwise và toán tử chuyển nhượng
^ = A ^ = 2 Nhà điều hành Chỉ định và Độc quyền Bitwise
| = A! = 2 Nhà điều hành chuyển nhượng và bao gồm Bitwise

Vòng lặp

ĐẾN vòng câu lệnh được sử dụng để thực hiện lặp lại một khối câu lệnh cho đến khi một điều kiện cụ thể được thỏa mãn. Ngôn ngữ C # bao gồm các câu lệnh lặp sau.

  • Đối với vòng lặp
  • Trong khi lặp lại
  • Làm trong khi vòng lặp

Đối với vòng lặp

Các vòng lặp for được sử dụng để thực thi một đoạn mã cụ thể trong nhiều lần cho đến khi điều kiện đã cho được thỏa mãn.

Cú pháp

for (tăng / giảm điều kiện khởi tạo) {// đoạn mã}

Sơ đồ:

Thí dụ:

using System public class ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

// Đầu ra:

một
2
3
4
5

Trong khi lặp lại

Các Trong khi lặp lại được sử dụng để thực thi một đoạn mã nhiều lần cho đến khi một điều kiện cụ thể được thỏa mãn.

Cú pháp

while (điều kiện) {// mã được thực thi}

Sơ đồ:

Thí dụ:

using System namespace Vòng lặp {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

// Đầu ra:

Giá trị của a: 5
Giá trị của a: 6
Giá trị của a: 7
Giá trị của a: 8
Giá trị của a: 9
Giá trị của a: 10

Làm trong khi vòng lặp

Vòng lặp Do while hoàn toàn tương tự như While Loop nhưng điểm khác biệt duy nhất là điều kiện được đặt ở cuối vòng lặp. Do đó, vòng lặp được thực hiện ít nhất một lần.

Cú pháp

do {// mã được thực thi} while (điều kiện)

Sơ đồ:

Thí dụ:

using System namespace 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) } } } 

// Đầu ra:

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ó điều kiện

Câu điều kiện được sử dụng để thực hiện tuyên bố hoặc nhóm của các câu lệnh dựa trên một số điều kiện. Nếu điều kiện sau đó là sự thật Câu lệnh C # được thực hiện nếu không thì tiếp theo tuyên bố sẽ được thực thi.

Các loại câu lệnh điều kiện khác nhau trong ngôn ngữ C ++ như sau:

  1. Câu lệnh if
  2. Câu lệnh If-Else
  3. Câu lệnh If-else lồng nhau
  4. Thang If-Else If
  5. Chuyển đổi câu lệnh

Câu lệnh if

Duy nhất nếu câu lệnh trong ngôn ngữ C # được sử dụng để thực thi mã nếu một điều kiện là đúng. Nó còn được gọi là câu lệnh lựa chọn một chiều.

Cú pháp

if (boolean-expression) {// câu lệnh được thực thi nếu boolean-expression là true}

Sơ đồ:

Thí dụ:

using System namespace Điều kiện {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.') } } } 

// Đầu ra:

2 nhỏ hơn 5
Câu lệnh này luôn được thực thi.

Câu lệnh If-Else

Các nếu khác câu lệnh trong ngôn ngữ C được sử dụng để thực thi mã nếu điều kiện là đúng hoặc sai. Nó còn được gọi là câu lệnh lựa chọn hai chiều.

Cú pháp

if (boolean-expression) {// câu lệnh được thực thi nếu boolean-expression là true} else {// câu lệnh được thực thi nếu boolean-expression là false}

Sơ đồ:

Thí dụ:

using System namespace Điều kiện {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.') } } } 

// Đầu ra:

12 lớn hơn hoặc bằng 5
Câu lệnh này luôn được thực thi.

Câu lệnh If-else lồng nhau

Lồng vào nhau nếu khác câu lệnh được sử dụng khi một chương trình yêu cầu nhiều hơn một biểu thức kiểm tra. Nó còn được gọi là câu lệnh lựa chọn nhiều chiều. Khi một loạt quyết định liên quan đến một tuyên bố, chúng tôi sử dụng nếu khác câu lệnh ở dạng lồng nhau.

Cú pháp

if (boolean-expression) {if (nested-expression-1) {// mã được thực thi} else {// mã được thực thi}} else {if (lồng nhau-biểu thức-2) {// mã được thực thi } else {// mã được thực thi}}

Sơ đồ:

Thí dụ:

using System namespace Có điều kiện {class lồng nhau {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

// Đầu ra:

13 là lớn nhất

Thang khác-nếu

Các nếu-khác-nếu câu lệnh được sử dụng để thực thi một mã từ nhiều điều kiện. Nó còn được gọi là câu lệnh quyết định đa đường. Nó là một chuỗi các câu lệnh if..else trong đó mỗi câu lệnh if được liên kết với câu lệnh else if và cuối cùng sẽ là một câu lệnh else.

Cú pháp

if (condition1) {// mã được thực thi nếu điều kiện1 là đúng} else if (condition2) {// mã được thực thi nếu điều kiện2 là đúng} else if (điều kiện3) {// mã được thực thi nếu điều kiện 3 là đúng} ... else {// mã được thực thi nếu tất cả các điều kiện đều sai}

Sơ đồ:

Thí dụ:

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 ')}}

// Đầu ra:

tôi 20 tuổi

Chuyển đổi câu lệnh

Công tắc điện câu lệnh đóng vai trò thay thế cho một thang if-else-if dài được sử dụng để kiểm tra danh sách các trường hợp. Câu lệnh switch chứa một hoặc nhiều nhãn chữ hoa thường được kiểm tra dựa trên biểu thức switch. Khi biểu thức khớp với một trường hợp thì các câu lệnh liên quan với trường hợp đó sẽ được thực thi.

Cú pháp

switch (biến / biểu thức) {case value1: // Các câu lệnh được thực thi nếu biểu thức (hoặc biến) = value1 break case value2: // Các câu lệnh được thực thi nếu biểu thức (hoặc biến) = value1 break ... ... ... .. . ... ... default: // Các câu lệnh được thực thi nếu không có trường hợp nào khớp}

Sơ đồ:

Thí dụ:

using System namespace Điều kiện {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 ('Nguyên âm') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Nguyên âm') break case 'o': Console.WriteLine ('Nguyên âm') ngắt chữ 'u': Console.WriteLine ('Nguyên âm') ngắt mặc định: Console.WriteLine ('Không phải nguyên âm') break}}}}

// Đầu ra:

Nhập một bảng chữ cái

Nguyên âm

Dây

Chuỗi Datatype là một thành viên của System.String Lớp học. Nó có khả năng lưu trữ kiểu dữ liệu ký tự. Chúng tôi có thể thực hiện các thao tác khác nhau trên Stings nhưnối, so sánh, nhận chuỗi con, tìm kiếm, cắt, thay thế và nhiều hơn nữa.

Sự tương tự của chuỗi và chuỗi

Trong C # Chuỗichuỗi là tương đương. Chuỗi từ là một từ khóa và hoạt động như System.String lớp học. Chúng ta có thể sử dụng một trong hai phiên bản để khai báo chuỗi.

Cú pháp:

string s1 = 'Edureka' // tạo chuỗi bằng từ khóa string String s2 = 'Happy Learning' // tạo chuỗi bằng lớp String

Thí dụ:

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)}}

// Đầu ra:

Edureka
Hướng dẫn Csharp

Phương thức chuỗi trong C #

phương pháp Sự miêu tả
Nhân bản () Được sử dụng để trả về một tham chiếu đến phiên bản String này.
So sánh (Chuỗi, Chuỗi) Dùng để so sánh hai đối tượng String được chỉ định.
Concat (Chuỗi, Chuỗi) Nối hai phiên bản được chỉ định của Chuỗi.
Chứa (Chuỗi) Trả về một giá trị cho biết một chuỗi con được chỉ định
Sao chép (Chuỗi) Được sử dụng để tạo một phiên bản Chuỗi mới có cùng giá trị
CopyTo (Int, Char [], Int, Int) Sao chép các ký tự từ một vị trí được chỉ định
Bằng (Chuỗi, Chuỗi) Xác định rằng hai đối tượng Chuỗi có cùng giá trị.
Định dạng (Chuỗi, Đối tượng) Thay thế một hoặc nhiều mục định dạng trong một chuỗi được chỉ định
IndexOf (Chuỗi) Báo cáo chỉ số dựa trên 0 của lần xuất hiện đầu tiên
Chèn (Int32, Chuỗi) Trả về một chuỗi mới trong đó một chuỗi được chèn vào một chỉ mục.
IsInterned (Chuỗi) Cho biết chuỗi này ở dạng chuẩn hóa Unicode C.
IsNullOrEmpty (Chuỗi) Chỉ ra rằng chuỗi được chỉ định là null hoặc là một chuỗi rỗng.
IsNullOrWhiteSpace (Chuỗi) Được sử dụng để cho biết liệu một chuỗi được chỉ định là null, rỗng,
Tham gia (Chuỗi, Chuỗi []) Được sử dụng để nối tất cả các phần tử của một mảng chuỗi
LastIndexOf (Char) Báo cáo vị trí chỉ mục dựa trên 0 của ký tự cuối cùng
LastIndexOfAny (Char []) Báo cáo vị trí chỉ mục dựa trên 0 của ký tự cuối cùng
Loại bỏ (Int32) Trả về một chuỗi mới có tất cả các ký tự
Thay thế (Chuỗi, Chuỗi) Trả về một chuỗi mới trong đó tất cả các lần xuất hiện của một chuỗi
Tách (Char []) Nó được sử dụng để chia một chuỗi thành các chuỗi con
StartsWith (Chuỗi) Nó được sử dụng để kiểm tra xem phần đầu của chuỗi này
Chuỗi con (Int32) Nó được sử dụng để lấy một chuỗi con từ trường hợp này.
ToCharArray () Sao chép các ký tự trong trường hợp này vào một mảng Unicode.
ToString () Nó được sử dụng để trả về thể hiện của String.
Cắt () Cắt chuỗi


Mảng

Tương tự như các ngôn ngữ lập trình khác, C # có mảng. Mảng là cấu trúc dữ liệu đơn giản được thiết kế để lưu trữ cùng một kiểu dữ liệu của các phần tử trong một vị trí bộ nhớ liền kề.

C # hỗ trợ các kiểu Mảng sau.

  • Mảng đơn chiều
  • Mảng đa chiều
  • Mảng răng cưa

Mảng đơn chiều

Mảng thứ nguyên đơn lưu trữ các phần tử dưới dạng một hàng duy nhất.

Cú pháp

int [] arr = new int [5] // tạo mảng

Thí dụ:

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 cho (int i = 0 i 

// Đầu ra:

10
hai mươi
30
40
năm mươi

Mảng đa chiều

Mảng đa chiều lưu trữ các phần tử ở dạng nhiều chiều như ma trận và hình khối, v.v.

Cú pháp

int val = a [2,3]

Thí dụ:

using System namespace 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() } } } 

// Đầu ra:

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

Mảng răng cưa

Mảng răng cưa chỉ đơn giản là một mảng của các mảng.

Thí dụ:

using System namespace 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() } } } 

// Đầu ra:

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

Bộ sưu tập

Bộ sưu tập có thể được coi đơn giản là một nhóm các đối tượng được thu thập cùng nhau để áp dụng một số chức năng trên dữ liệu thu thập được. Các hoạt động từng có thể thực hiện trên một tập hợp là,

  • lưu trữ đối tượng
  • cập nhật đối tượng
  • xóa đối tượng
  • lấy đối tượng
  • đối tượng tìm kiếm và
  • sắp xếp đối tượng

Các loại bộ sưu tập

Có ba khả năng khác nhau để làm việc với các bộ sưu tập. Ba không gian tên được đề cập dưới đây:

  • System.Collections.Generic các lớp học
  • System.Collections các lớp học
  • System.Collections.Concurrent các lớp học

Lớp System.Collections.Generic có các loại lớp sau:

  • Danh sách
  • Cây rơm
  • Xếp hàng
  • LinkedList
  • HashSet
  • SortedSet
  • Từ điển
  • SortedDictionary
  • SortedList

Các System.Collections các lớp được coi là các lớp kế thừa. chúng bao gồm các lớp sau.

  • Lập danh sách
  • Cây rơm
  • Xếp hàng
  • Hashtable

Các System.Collections.Concurrent các lớp họckhông gian tên cung cấp các lớp cho các hoạt động an toàn luồng. Bây giờ nhiều luồng sẽ không tạo ra vấn đề khi truy cập các mục thu thập. các lớp học có sẵn trong này,

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentDictionary
  • Phân vùng
  • Phân vùng
  • OrderablePartitioner

Danh sách

Các danh sách được coi là một cấu trúc dữ liệu có sẵn trong System.Collection.Generics không gian tên. Nó có thể lưu trữ và tìm nạp các phần tử. Danh sách có khả năng lưu trữ các phần tử trùng lặp.

Thí dụ:

using System using 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 name in names) {Console.WriteLine (name)}}}

// Đầu ra:

Sandhya
Arun
Prashanth
Kiran

Bộ băm

C # HashSetthể loại thường quencửa hàng,lấy đihoặc làđọc các thành phần. Nókhônglưu trữ bản saocác thành phần.nó được thúc giụcsử dụng HashSet thể loạinếubạn đã cócất giữcô độc đặc biệt các thành phần . nó là tìm thấy trong không gian tên System.Collections.Generic.

Thí dụ:

using System using 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 name in names) {Console.WriteLine (name)}}}

// Đầu ra:

Sunil
Amar
Pujari
Imran
karan

Tập hợp đã sắp xếp

C # SortedSetlớp học thường quencửa hàng, tẩy hoặc là đọc các yếu tố . Nó duy trì thứ tự tăng dần vàkhônglưu trữ bản saocác yếu tố.nó là lời nhắcđể sử dụng SortedSetthể loạinếubạn đã cócất giữ đặc biệt các thành phần và duy trì thứ tự tăng dần.nó làtìm thấy trong không gian tên System.Collections.Generic.

Thí dụ:

using System using 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 name in names) {Console.WriteLine (name)}}}

// Đầu ra:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Cây rơm

Các cây rơm là một bộ sưu tập đơn giản sau CẠNH hoặc đầu tiên trong thủ tục cuối cùng trong khi xử lý các phần tử được lưu trữ trong đó.

Thí dụ:

using System using 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 (chuỗi tên trong tên) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('Sau phần tử Pop, Peek:' + names.Peek ())}}

// Đầu ra:

kumar
Rajesh
James
Pooja
Chandan
Yếu tố Peek: kumar
Pop: kumar
Sau phần tử Pop, Peek: Rajesh

Xếp hàng

Hàng đợi hoàn toàn tương tự như Stack nhưng điểm khác biệt duy nhất là Hàng đợi theo sau FIFO hoặc nguyên tắc nhập trước xuất trước trong khi xử lý các phần tử được lưu trữ trong đó.

Thí dụ:

using System using 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 (string name in names) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue, Peek element:' + names.Peek ())}}

// Đầu ra:

Srujan
Bát nhã
John
Hung dữ
ngày
Yếu tố Peek: Srujan
Dequeue: Srujan
Sau Dequeue, yếu tố Peek: Prajat

Danh sách liên kết

Danh sách liên kết là một tập hợp bộ nhớ động. Các phần tử trong danh sách Liên kết được lưu trữ bằng cách truy cập bộ nhớ từ heap và lưu trữ các phần tử theo thứ tự liên tục bằng cách liên kết địa chỉ của chúng.

Thí dụ:

using System using 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 name in names) {Console.WriteLine (name)}}}

// Đầu ra:

bad
Bounds
Arun
Prakash
jay

Từ điển

Từ điển thể loạisử dụngý tưởngcủa bảng băm. Nó lưu trữ các giá trị trêntiền đềcủa khóa. Nó chứađặc biệtchìa khóacô độc. Bởisự hỗ trợcủa chìa khóa,chúng tôi sẽ đơn giảntìm kiếm hoặclấy đi các yếu tố.nó làtìm thấy trong không gian tên System.Collections.Generic.

Thí dụ:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') tên.Add ('3', 'Preetam') tên. Thêm ('4', 'Roy') tên.Add ('5', 'Akash') foreach (KeyValuePair kv trong tên) {Bảng điều khiển. WriteLine (kv.Key + '' + kv.Value)}}}

// Đầu ra:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Từ điển được sắp xếp

Các SortedDictionary thể loạisử dụngthiết kếcủa bảng băm. Nó lưu trữ các giá trị trênÝ tưởngcủa khóa. Nó chứađặc biệtkhóa và duy trì thứ tự tăng dần trênÝ tưởngcủa khóa. Bởisự hỗ trợcủa chìa khóa,chúng tôi sẽ đơn giảntìm kiếm hoặclấy đi các yếu tố.nó làtìm thấy trong không gian tên System.Collections.Generic.

Thí dụ:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') tên.Add ('5', 'Ramesh') tên. Thêm ('3', 'Vidya') tên.Add ('2', 'Pallavi') foreach (KeyValuePair kv trong tên) {Bảng điều khiển. WriteLine (kv.Key + '' + kv.Value)}}}

// Đầu ra:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Danh sách đã sắp xếp

chuyển đổi tra cứu trong ví dụ Informatica

Các SortedListmộtmảng các cặp khóa / giá trị. Nó lưu trữ các giá trị trêntiền đềcủa khóa. Danh sách đã sắp xếpthể loạichứa đựngđặc biệtkhóa và duy trì thứ tự tăng dần trêntiền đềcủa khóa. Bởisự hỗ trợcủa chìa khóa,chúng tôi có thể đơn giảntìm kiếm hoặc loại bỏcác yếu tố.nó làtìm thấy trong System.Collections.Generic không gian tên.

Thí dụ:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') tên.Add ('5', 'Ramesh') tên. Thêm ('3', 'Vidya') tên.Add ('2', 'Pallavi') foreach (KeyValuePair kv trong tên) {Bảng điều khiển. WriteLine (kv.Key + '' + kv.Value)}}}

// Đầu ra:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Kết cấu

Cấu trúc là một kiểu dữ liệu do người dùng xác định được thiết kế để lưu trữ nhiều phần tử của kiểu dữ liệu khác nhau. Cấu trúc được khai báo bằng từ khóa cấu trúc.

Thí dụ:

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 = 'Lập trình C #' Book1.author = ' Ramchandra Kumar 'Book1.subject =' Hướng dẫn lập trình C ++ 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Tên sách 1: {0}', Book1.title) Console.WriteLine ('Sách 1 Tác giả: {0}', Book1.author) Console.WriteLine ('Chủ đề sách 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 Author: {0}', Book2.author) Console.WriteLine ('Chủ đề sách 2: {0}', Book2.subject) Console.WriteLine ('Book_id sách 2: {0}', Book2.book_id) Console.ReadKey ()}}

// Đầu ra:

Tên sách 1: Lập trình C #
Quyển 1 Tác giả: Ramchandra Kumar
Cuốn 1 chủ đề: Hướng dẫn lập trình C ++
Đặt 1 cuốn_id: 95908978
Tên cuốn sách 2: Thanh toán viễn thông
Quyển 2 Tác giả: Karan
Cuốn 2 chủ đề: Hướng dẫn thanh toán viễn thông
Book_id book 2: 18674900

Chức năng

Hàm được định nghĩa là một khối mã của mã chính. Hàm được sử dụng để thực thi các câu lệnh được chỉ định trong khối mã. Một hàm bao gồm các thành phần sau.

  • Tên chức năng: Nó là một tên đặc biệt được sử dụng để thực hiện một cuộc gọi Hàm.
  • Loại trả lại: Nó chỉ định kiểu dữ liệu của hàm trả về giá trị.
  • Thân hình: Nó chứa các câu lệnh thực thi.
  • Bộ xác định quyền truy cập: Nó chỉ định khả năng truy cập chức năng trong ứng dụng.
  • Thông số: Nó là một danh sách các đối số mà chúng ta có thể truyền cho hàm trong khi gọi.

Cú pháp

FunctionName () {// nội dung hàm // câu lệnh trả về}

Thí dụ:

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 ('Tới Edureka') Console.WriteLine ('Chào mừng' + tin nhắn)}}}

// Đầu ra:

Chức năng hiển thị bên trong
Chào mừng đến với Edureka

Các hàm có thể được thực thi theo 3 cách khác nhau:

  • Gọi theo giá trị
  • Gọi bằng tham chiếu
  • Tham số ra

Gọi theo giá trị

Trong C #, giá trị -kiểu thông sốChúng tôivượt quamột bản saocó giá trị ban đầu đối vớichức năng thay vìtài liệu tham khảo. Nókhôngsửa đổigiá trị đầu tiên. Ansửa đổi được tạo rađã quagiá trị khôngTuổi tácgiá trị cụ thể.trongví dụ sau,chúng tôi đã cóvượt quagiá trị xuyên suốtcácgọi.

Thí dụ:

using System namespace CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('Giá trị bên trong hàm show' + val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Giá trị trước khi gọi hàm' + val) program.Show (val) Console.WriteLine ('Giá trị sau khi gọi hàm' + val)}}}

// Đầu ra:

Giá trị trước khi gọi hàm 50
Giá trị bên trong hàm hiển thị 2500
Giá trị sau khi gọi hàm 50

Gọi bằng tham chiếu

Trong cuộc gọi bằng phương pháp tham chiếu,đến ref từ khóa để chuyển đối số là kiểu tham chiếu. Nó chuyển tham chiếu của các đối số tới hàm chứ không phải là bản sao của giá trị ban đầu. Những thay đổi trong các giá trị đã chuyển là vĩnh viễn và sửa đổi giá trị biến ban đầu.

Thí dụ:

using System namespace CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('Giá trị bên trong hàm show' + val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Giá trị trước khi gọi hàm' + val) program.Show (ref val) Console.WriteLine ('Giá trị sau khi gọi hàm' + val)}}}

// Đầu ra:

Giá trị trước khi gọi hàm 50
Giá trị bên trong hàm hiển thị 2500
Giá trị sau khi gọi hàm 2500

Tham số ra

Tham số Outcung cấp ngoài từ khóa để chuyển đối số dưới dạng out-type. Nó giống như kiểu tham chiếu, ngoại trừ việc nó không yêu cầu biến khởi tạo trước khi truyền. Chúng ta phải sử dụng ngoài từ khóa để chuyển đối số dưới dạng out-type. Nó rất hữu ích khi chúng ta muốn một hàm trả về nhiều giá trị.

Thí dụ:

using System namespace 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 ('Giá trị trước khi truyền biến' + val) program.Show (out val) Console.WriteLine ('Giá trị sau khi nhận biến' + val)}}}

// Đầu ra:

Giá trị trước khi chuyển biến 50

Giá trịsau khi nhận được biến 25

Bây giờ chúng ta hãy chuyển sang lập trình hướng đối tượng

Lập trình hướng đối tượng

Lập trình hướng đối tượng Hệ thốnglà một mô hình lập trình dựa trên khái niệm các đối tượng chứa thành viên dữ liệuphương pháp liên quan đến chúng. Mục đích chính của lập trình hướng đối tượng là tăng tính linh hoạt và khả năng bảo trì của các chương trình

Các tính năng của lập trình hướng đối tượng:

  • Nó nhấn mạnh nhiều hơn vào dữ liệu hơn là thủ tục.
  • Các chương trình được chia thành các đối tượng do đó làm cho nó dễ dàng làm việc với.
  • Cấu trúc dữ liệu được thiết kế theo cách mà chúng đặc trưng cho các đối tượng.
  • Các chức năng hoạt động trêndữ liệu của một đối tượng được đặt cùng nhau trong cấu trúc dữ liệu.
  • Dữ liệu bị ẩn và không thể được truy cập bởi các chức năng bên ngoài nếu không được phép.
  • Giao tiếp giữa các đối tượng có thể diễn ra với sự trợ giúp của các chức năng.
  • Thêm dữ liệu và chức năng mới đã trở nên dễ dàng.
  • Thực hiện theo cách tiếp cận từ dưới lên trong thiết kế chương trình.

Các mô hình hướng đối tượng trong C # như sau

Liệt kê trong C #

Enum hoặc còn được gọi là sự liệt kê trong C # được sử dụng để lưu trữ các giá trị không đổi mà không cần phải thay đổi chúng trong toàn bộ quá trình thực thi Chương trình C #. Nóđược sử dụng để lưu trữ một tập hợp các hằng số được đặt tên như mùa, ngày, tháng, kích thước, v.v.

Thí dụ:

using System public class EnumExample {public enum week {Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu, Thứ Bảy, Chủ Nhật} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Thứ Hai = {0}', x) Console.WriteLine ('Thứ Sáu = {0}', y)}}

// Đầu ra:

Thứ Hai = 0
Thứ sáu = 4

Phương pháp tiếp cận lập trình hướng đối tượng

Phong cách lập trình hướng đối tượng có thể đạt được bằng cách thực hiện theo các phương pháp được quy định dưới đây.

Đóng gói

Đóng gói là một phương pháp để kết hợp phương pháp cùng với họ dữ liệu thành viên.

Thí dụ:

using System namespace 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 (' Width: {0} ', width) 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 ()}}}

// Đầu ra:

Chiều dài: 50
Chiều rộng: 35
Diện tích: 1750

Trừu tượng

Trừu tượng là một phương pháp để ẩn giấu phần mã hóa phức tạp từ người dùng bằng cách chỉ cung cấp cho anh ta thông tin bắt buộc mà anh ta cần.

Thí dụ:

using System public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('vẽ hình chữ nhật ...')}} public class Circle: Shape {public override void draw () {Console.WriteLine ('draw circle ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

// Đầu ra:

vẽ hình chữ nhật ...
vẽ hình tròn ...

Giao diện

Các giao diện là hoàn toàn tương tự với Trừu tượng. Chức năng của Giao diện là ẩn dữ liệu không quan trọng khỏi người dùng và cung cấp cho người dùng dữ liệu quan trọng duy nhất mà người dùng cần.

Thí dụ:

using System public interface Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('vẽ hình chữ nhật ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('draw circle ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

// Đầu ra:

vẽ hình chữ nhật ...
vẽ hình tròn ...

Đa hình

Đa hìnhlà sự kết hợp của 'Nhiều' + 'Morphs' có nghĩa là nhiều hình thức. Nó là một từ Hy Lạp. Nó có nghĩa là đoạn mã có thể có nhiều dạng. Chúng ta có hai loại Đa hình.

  • Biên dịch đa hình thời gian
  • Đa hình thời gian chạy

Thí dụ:

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)}}

// Đầu ra:

trắng

Di sản

Di sản là một quá trình trong đó một đối tượng tự động thu thập tất cả các thuộc tính và hành vi của đối tượng mẹ của nó. Bạn có thể sử dụng lại, mở rộng hoặc sửa đổi các thuộc tính và hành vi được định nghĩa trong lớp khác. lớp kế thừa các thành viên của lớp khác được gọi là Lớp có nguồn gốc và lớp có các thành viên được kế thừa được gọi là căn cứ lớp học. Lớp dẫn xuất là lớp chuyên biệt cho lớp cơ sở.

Ví dụ cho Thừa kế một cấp

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 ())}} lớp 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 () }}}

// Đầu ra:

Chiều dài: 4,5
Chiều rộng: 7,5
Diện tích: 33,75
Tiêu hao: 2362,5

Ví dụ về Thừa kế Đa cấp

using System namespace 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 (width * height)} 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 chi phí sơn: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}

// Đầu ra:

Tổng diện tích: 35
Tổng chi phí sơn: $ 2450

Quá tải

Quá tải là một tình huống mà chúng tôi có hai hoặc thành viên được khai báo bằng cách sử dụng cùng một tên. Quá tải cũng có thể xảy ra khi chúng ta khai báo hai hoặc nhiều phương thức có cùng tên. Hãy để chúng tôi kiểm tra các ví dụ về cả hai.

Quá tải thành viên

Thí dụ:

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))}}

// Đầu ra:

35
60

Quá tải phương thức

Thí dụ:

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))}}

// Đầu ra:

35
33,699997

Ghi đè

Ghi đè là một tình huống trong đó lớp con định nghĩa cùng một phương thức mà lớp cha cũng đang định nghĩa. Hãy để chúng tôi hiểu điều này qua một ví dụ nhỏ.

Thí dụ:

using System public class Edureka {public virtual void eat () {Console.WriteLine ('eat')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('eat food')}} public class Overriding {public static void Main () {Dog d = new Dog () d.eat ()}}

// Đầu ra:

Ăn thức ăn

Không gian tên

Các không gian tên về cơ bản được sử dụng để xử lý nhiều lớp có trong chương trình. Không gian tên có sẵn theo nhiều cách khác nhau.

  • System.Console: Đây, Hệ thống trở thành không gian tên
  • Để truy cập lớp của một không gian tên, chúng ta cần sử dụng namespacename.classname.
  • Chúng ta có thể sử dụng sử dụng từ khóa nữa.

Thí dụ:

using System using First using Second namespace Thứ nhất {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} namespace Thứ hai {public class Happy_Learning {public void sayWish () {Console.WriteLine (' Happy Learning ')}}} public class Namespace {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWish ()}}

// Đầu ra:

Chào mừng đến với Edureka
Học vui vẻ

Thao tác tệp

Các hoạt động tệp có sẵn trong C # như sau:

Hoạt động Sự miêu tả
BinaryReader Đọc dữ liệu nguyên thủy từ một luồng nhị phân.
BinaryWriter Viết dữ liệu nguyên thủy ở định dạng nhị phân.
BufferedStream Lưu trữ tạm thời cho một luồng byte.
Danh mục Giúp thao tác cấu trúc thư mục.
DirectoryInfo Được sử dụng để thực hiện các hoạt động trên thư mục.
DriveInfo Cung cấp thông tin cho các ổ đĩa.
Tập tin Giúp thao tác với các tập tin.
Nộp thông tin Được sử dụng để thực hiện các thao tác trên tệp.
Tập hồ sơ Được sử dụng để đọc và ghi vào bất kỳ vị trí nào trong tệp.
MemoryStream Được sử dụng để truy cập ngẫu nhiên vào dữ liệu truyền trực tuyến được lưu trữ trong bộ nhớ.
Con đường Thực hiện các thao tác trên thông tin đường dẫn.
StreamReader Được sử dụng để đọc các ký tự từ một luồng byte.
StreamWriter Được sử dụng để ghi các ký tự vào một luồng.
StringReader Được sử dụng để đọc từ bộ đệm chuỗi.
StringWriter Được sử dụng để ghi vào một bộ đệm chuỗi.

FileMode

Các FileMode là một liệt kê xác định nhiều phương pháp mở tệp. Các thành viên của FileMode Enumerator được mô tả như sau:

  • Nối: Nó mở một tệp hiện có và đặt con trỏ ở cuối tệp hoặc tạo tệp nếu tệp không tồn tại.
  • Tạo nên: Nó được thiết kế để tạo một tệp mới.
  • Tạo mới: Nó được thiết kế để chỉ định cho hệ điều hành, rằng nó sẽ tạo một tệp mới.
  • Mở: Nó được thiết kế để mở một tệp hiện có.
  • OpenOrCreate: Nó được thiết kế để chỉ định hệ điều hành rằng nó sẽ mở một tệp nếu nó tồn tại, nếu không nó sẽ tạo một tệp mới.
  • Cắt ngắn: Truncate mở một tệp hiện có và cắt bớt kích thước của nó thành 0 byte.

Truy cập file

Truy cập file Điều tra viên đã quen với việc truy cập vào một tệp cụ thể. Nó có các thành viên sau.

  • Đọc
  • Viết
  • Đọc viết

FileShare

Các Chia sẻ tệp Enumerator được sử dụng để chia sẻ một tệp cụ thể. Nó có các thành viên sau.

  • Kế thừa: Tính kế thừa cho phép một bộ xử lý tệp chuyển một thừa kế cho các tiến trình con.
  • Không ai: Không có gì từ chối chia sẻ tệp hiện tại
  • Đọc: Đọc cho phép mở tệp để đọc.
  • Đọc viết: ReadWrite cho phép mở tệp để đọc và ghi.
  • Viết: Ghi cho phép mở tệp để ghi.

Sự kiện

Sự kiện thường được biết đến như một hành động được tạo bởi người dùng. Nó có thể là một cú nhấp chuột và thậm chí là một lần gõ phím từ bàn phím. Tương tự, các chương trình C # cũng có các sự kiện. Trình tạo sự kiện được gọi là nhà xuất bản và người nhận sự kiện được gọi là người đăng kí.

Nhà xuất bản

ĐẾN nhà xuất bản chứa định nghĩa của sự kiện và đại biểu. Các đại biểu sự kiện kết hợp được định nghĩa trong đối tượng này. A nhà xuất bản đối tượng lớp gọi sự kiện và nó được thông báo cho các đối tượng khác.

Người đăng kí

ĐẾN người đăng kí chấp nhận sự kiện và cung cấp xử lý sự kiện. Các ủy nhiệm trong lớp nhà xuất bản gọi phương thức / sự kiện người xử lý của lớp thuê bao.

Thí dụ:

using System namespace Edureka {public ủy quyền 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 . '+ tên người dùng} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

// Đầu ra:

Chào mừng đến với Edureka. Học vui vẻ

Generics

Generics là một khái niệm cung cấp các thành viên và phương thức của một lớp với các trình giữ chỗ trong Thời gian chạy. Chúng ta có thể xác định Generics bằng cách sử dụng dấu ngoặc. Hãy để chúng tôi kiểm tra các ví dụ sau đây.

Generics trong một lớp

using System namespace Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Thông báo này là từ class chung' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}}

// Đầu ra:

Thông báo này là từ lớp chung
123

Generics trong một phương pháp

using System namespace 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 thông báo là từ phương thức chung ') genC.Show (321) genC.Show (' H ')}}}

// Đầu ra:

Thông báo này là từ phương pháp chung
321
H

Đại biểu

Các Ủy quyền hoạt động như một tham chiếu đến phương thức. Về cơ bản, nó giống như một con trỏ hàm trong C và C ++ nhưng tốt hơn nhiều và an toàn về kiểu. Đại biểu trong phương pháp tĩnh phương thức chỉ gói gọn. Trong khi đại biểu trong ví dụ method đóng gói cả method và instance. Cách sử dụng tốt nhất của ủy quyền là sử dụng như một biến cố.

Thí dụ:

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 một đại biểu, Số mới là: '+ getNumber ()) c2 (3) Console.WriteLine (' Sau khi máy tính hai đại biểu, Số mới là: '+ getNumber ())}}

// Đầu ra:

Sau khi máy tính một đại biểu, Số mới là: 45
Sau khi tính hai đại biểu, Số mới là: 135

Suy ngẫm

Reflection là bắt buộc để có được siêu dữ liệu trong thời gian chạy. Tham khảo có sẵn trong System.Reflection không gian tên. Nó yêu cầu các lớp sau để thực thi.

  • Kiểu
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Mô-đun
  • hội,, tổ hợp
  • AssemblyName
  • Con trỏ

Loại lớp

Lớp C # Type đại diện cho các khai báo kiểu cho các kiểu lớp, kiểu giao diện, kiểu liệt kê, kiểu mảng, kiểu giá trị

Loại Thuộc tính

Dưới đây là danh sách các thuộc tính quan trọng của các lớp Type.

Bất động sản Sự miêu tả
hội,, tổ hợp Nhận hội cho loại này.
AssemblyQualifiedName Nhận tên đủ điều kiện Assembly cho loại này.
Thuộc tính Nhận các thuộc tính được liên kết với loại.
BaseType Nhận kiểu cơ sở hoặc kiểu mẹ.
Họ và tên Nhận tên đủ điều kiện của loại.
IsAbstract được sử dụng để kiểm tra xem kiểu có phải là Tóm tắt hay không.
IsArray được sử dụng để kiểm tra xem kiểu có phải là Mảng hay không.
IsClass được sử dụng để kiểm tra xem loại có phải là Class hay không.
IsEnum được sử dụng để kiểm tra xem loại có phải là Enum hay không.
IsInterface được sử dụng để kiểm tra xem loại có phải là Giao diện hay không.
IsNested được sử dụng để kiểm tra xem loại có lồng nhau hay không.
IsPrimitive được sử dụng để kiểm tra xem loại là Nguyên thủy.
IsPointer được sử dụng để kiểm tra xem kiểu có phải là Con trỏ hay không.
IsNotPublic được sử dụng để kiểm tra xem loại có phải là Công khai hay không.
IsPublic được sử dụng để kiểm tra xem loại có phải là Công khai hay không.
Bị niêm phong được sử dụng để kiểm tra xem loại có Kín hay không.
IsSerializable được sử dụng để kiểm tra xem loại có thể nối tiếp hay không.
MemberType được sử dụng để kiểm tra xem loại có phải là loại Thành viên của loại lồng nhau hay không.
Mô-đun Nhận mô-đun của loại.
Tên Nhận tên của loại.
Không gian tên Nhận không gian tên của loại.
Bất động sản Sự miêu tả
GetConstructors () Trả về tất cả các hàm tạo công khai cho Kiểu.
GetConstructors (BindingFlags) Trả về tất cả các hàm tạo cho Kiểu có BindingFlags được chỉ định.
GetFields () Trả về tất cả các trường công khai cho Kiểu.
GetFields (BindingFlags) Trả về tất cả các hàm tạo công khai cho Kiểu có BindingFlags được chỉ định.
GetMembers () Trả về tất cả các thành viên công khai cho Loại.
GetMembers (BindingFlags) Trả về tất cả các thành viên cho Loại có BindingFlags được chỉ định.
GetMethods () Trả về tất cả các phương thức công khai cho Kiểu.
GetMethods (BindingFlags) Trả về tất cả các phương thức cho Loại có BindingFlags được chỉ định.
GetProperties () Trả về tất cả các thuộc tính công cộng cho Kiểu.
GetProperties (BindingFlags) Trả về tất cả các thuộc tính cho Loại có BindingFlags được chỉ định.
GetType () Nhận Loại hiện tại.
GetType (Chuỗi) Nhận Loại cho tên đã cho.

Ví dụ về Suy ngẫm:

Nhận loại

Thí dụ:

using System public class GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

// Đầu ra:

Hệ thống.Int32

Nhận lắp ráp

Thí dụ:

using System using System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// Đầu ra:

System.Private.CoreLib, Phiên bản = 4.0.0.0, Văn hóa = trung lập, PublicKeyToken = 7cec85d7bea7798e

Thông tin loại in

Thí dụ:

using System using 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)}}

// Đầu ra:

Thật
Sai
Sai

Trình tạo bản in

Thí dụ:

using System using 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 (ConstructorInfo c in ci) {Console.WriteLine (c)}}}

// Đầu ra:

Cấu trúc của kiểu 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])

Phương pháp in

Thí dụ:

using System using System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Các phương thức của {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

// Đầu ra:

Phương thức của System.String type ...
System.String Replace (System.String, System.String)
System.String [] Tách (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] Tách (Char [])
System.String [] Split (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) ......

Trường in

Thí dụ:

using System using 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 (FieldInfo f in ci) {Console.WriteLine (f)}}}

// Đầu ra:

Các trường của loại System.String ...
System.String rỗng

Bây giờ, chúng ta hãy chuyển sang một số khái niệm lập trình C # nâng cao

Các khái niệm C # nâng cao

Chức năng ẩn danh

Hàm thiếu tên cụ thể được gọi là Vô danh Chức năng. Có hai loại Hàm ẩn danh có sẵn trong C #

  • Biểu thức Lambda
  • Phương thức ẩn danh

Thí dụ:

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:' + j)}}}

// Đầu ra:

Hình vuông: 625

Phương thức ẩn danh

Các phương pháp ẩn danh cung cấp chức năng tương tự như biểu thức lambda, ngoại trừ việc nó cho phép chúng ta bỏ qua danh sách tham số.

Thí dụ:

using System namespace AnonymousMethods {class Program {public ủy quyền void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = Delegate () {Console.WriteLine ('Đây là hàm ẩn danh')} fun ()}}}

// Đầu ra:

Đây là chức năng ẩn danh

Đa luồng

Đa luồng là một quá trình trong đó nhiều luồng được tạo và gán cho các nhiệm vụ khác nhau. điều này giúp tiết kiệm thời gian bằng cách thực hiện nhiều công việc cùng một lúc. Lớp đa luồng có sẵn trong System.Threading không gian tên.

Không gian tên System.Threading

Các System.Threading không gian tên chứa các lớp và giao diện để tạo điều kiện cho đa luồng. Nó cung cấp các lớp để đồng bộ hóa tài nguyên luồng. Dưới đây là danh sách các lớp thường được sử dụng:

  • Chủ đề
  • Mutex
  • Hẹn giờ
  • Giám sát
  • Semaphore
  • ThreadLocal
  • ThreadPool
  • Bay hơi

Quy trình và chuỗi

Quy trình thực sự và ứng dụng và nó được coi là một nặng ký thành phần. Mặt khác, Chủ đề là một mô-đun của toàn bộ ứng dụng. Nó là nhẹ so với quá trình

Vòng đời của một chuỗi

Mỗi Chủ đề có một Vòng đời. Vòng đời của luồng được định nghĩa trong lớp System.Threading.Thread. Sau đây là các giai đoạn trong Vòng đời của bất kỳ luồng nào.

  • Chưa bắt đầu
  • Runnable (Sẵn sàng chạy)
  • Đang chạy
  • Không chạy được
  • Đã chết

Lớp Thread cung cấp các thuộc tính và phương thức như sau.

Thuộc tính chủ đề

Bất động sản Sự miêu tả
CurrentThread trả về phiên bản của luồng hiện đang chạy.
IsAlive kiểm tra xem luồng hiện tại có còn sống hay không.
IsBackground Để lấy / đặt giá trị của luồng hiện tại có ở chế độ nền hay không.
ManagedThreadId được sử dụng để lấy id duy nhất cho luồng hiện được quản lý.
Tên được sử dụng để lấy hoặc đặt tên của luồng hiện tại.
Sự ưu tiên được sử dụng để lấy hoặc đặt mức độ ưu tiên của luồng hiện tại.
ThreadState được sử dụng để trả về một giá trị đại diện cho trạng thái luồng.

Phương thức chủ đề

phương pháp Sự miêu tả
Sự phá thai() được sử dụng để kết thúc luồng. Nó tăng ThreadAbortException.
Làm gián đoạn() được sử dụng để ngắt một luồng đang ở trạng thái WaitSleepJoin.
Tham gia() được sử dụng để chặn tất cả các luồng đang gọi cho đến khi luồng này kết thúc.
ResetAbort () được sử dụng để hủy bỏ yêu cầu Abort cho luồng hiện tại.
Sơ yếu lý lịch() được sử dụng để tiếp tục chuỗi bị treo. Nó đã lỗi thời.
Ngủ (Int32) được sử dụng để tạm ngừng luồng hiện tại trong mili giây được chỉ định.
Khởi đầu() thay đổi trạng thái hiện tại của luồng thành Runnable.
Đình chỉ () đình chỉ luồng hiện tại nếu nó không bị treo. Nó đã lỗi thời.
Năng suất () được sử dụng để nhường quá trình thực thi của luồng hiện tại cho một luồng khác.

Ví dụ về chủ đề chính

using System using System.Threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// Đầu ra:

MainThread

Xử lý ngoại lệ

Các ngoại lệ là một lỗi do chương trình đưa ra trong thời gian chạy của nó. Chúng tôi thực hiện Xử lý Ngoại lệ để làm cho chương trình của chúng tôi không có ngoại lệ.

ngoại lệ Sự miêu tả
System.DivideByZeroException Lỗi được tạo ra bằng cách chia một số với số không.
System.NullReferenceException xử lý lỗi được tạo ra bằng cách tham chiếu đối tượng null.
System.InvalidCastException xử lý lỗi do đánh máy không hợp lệ.
System.IO.IOException xử lý các lỗi Đầu vào / Đầu ra.
System.FieldAccessException Lỗi do quyền truy cập riêng tư / được bảo vệ không hợp lệ.

Trong C #, chúng tôi sử dụng 4 từ khóa để thực hiện xử lý ngoại lệ:

  • thử
  • nắm lấy
  • cuối cùng, và
  • phi
Thí dụ:
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 ('Tin nhắn này là từ khối catch')}}

// Đầu ra:

System.DivideByZeroException: Đã cố chia cho không.
tại ExExaEdurekample.Main (String [] args) trong F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: dòng 10
Tin nhắn này là từ khối bắt

Ví dụ về ngoại lệ tùy chỉnh

using System public class 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.') } } 

// Đầu ra:

InvalidAgeException: Xin lỗi, độ tuổi dự kiến ​​lớn hơn 18
tại Customized.validate (Int32 age) trong F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: dòng 18
tại Customized.Main (String [] args) trong F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: dòng 23
Bắt khối hiện đang được thực thi.

Cuối cùng là ví dụ về khối

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)} last {Console .WriteLine ('Khối cuối cùng được thực thi')} Console.WriteLine ('Khối bắt được thực thi')}}

// Đầu ra:

System.DivideByZeroException: Đã cố chia cho không.
tại FinalExecption.Main (String [] args) trong F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: dòng 10
Cuối cùng khối được thực thi
Khối bắt được thực thi

Chữ ký ngoại lệ của hệ thống

[SerializableAttribute] [ComVosystemAttribute (true)] public class SystemException: Exception

Trình tạo ngoại lệ hệ thống

Người xây dựng Sự miêu tả
SystemException () Nó được sử dụng để khởi tạo một phiên bản mới của lớp SystemException.
SystemException

(SerializationInfo, StreamingContext)

Nó được sử dụng để khởi tạo một phiên bản mới của lớp SystemException với dữ liệu được tuần tự hóa.
SystemException (Chuỗi) Nó được sử dụng để khởi tạo một phiên bản mới của lớp SystemException với một thông báo lỗi được chỉ định.
SystemException (Chuỗi, Ngoại lệ) Nó được sử dụng để khởi tạo một phiên bản mới của lớp SystemException với một thông báo lỗi được chỉ định và một tham chiếu đến ngoại lệ bên trong là nguyên nhân của ngoại lệ này.

Thuộc tính ngoại lệ hệ thống

Bất động sản Sự miêu tả
Dữ liệu Nó được sử dụng để lấy một bộ sưu tập các cặp khóa / giá trị cung cấp thông tin bổ sung do người dùng xác định về ngoại lệ.
HelpLink Nó được sử dụng để lấy hoặc đặt liên kết đến tệp trợ giúp được liên kết với ngoại lệ này.
HResult Nó được sử dụng để lấy hoặc đặt HRESULT, một giá trị số được mã hóa được gán cho một ngoại lệ cụ thể.
InnerException Nó được sử dụng để lấy thể hiện Exception gây ra ngoại lệ hiện tại.
Thông điệp Nó được sử dụng để nhận một thông báo mô tả ngoại lệ hiện tại.
Nguồn Nó được sử dụng để lấy hoặc đặt tên của ứng dụng gây ra lỗi.
StackTrace Nó được sử dụng để lấy biểu diễn chuỗi của các khung ngay lập tức trên ngăn xếp cuộc gọi.
TargetSite Nó được sử dụng để lấy phương thức ném ngoại lệ hiện tại.

Phương pháp ngoại lệ hệ thống

Phương pháp Sự miêu tả
Bằng (Đối tượng) Nó được sử dụng để kiểm tra xem đối tượng được chỉ định có bằng đối tượng hiện tại hay không.
Kết thúc () Nó được sử dụng để giải phóng tài nguyên và thực hiện các hoạt động dọn dẹp.
GetBaseException () Nó được sử dụng để lấy ngoại lệ gốc.
GetHashCode () Nó được sử dụng để lấy mã băm.
GetObjectData

(SerializationInfo, StreamingContext)

Nó được sử dụng để lấy dữ liệu đối tượng.
GetType () Nó được sử dụng để lấy kiểu thời gian chạy của phiên bản hiện tại.
MemberwiseClone () Nó được sử dụng để tạo một bản sao nông của Đối tượng hiện tại.
ToString () Nó được sử dụng để tạo và trả về một biểu diễn chuỗi của ngoại lệ hiện tại.

Ví dụ về ngoại lệ hệ thống

using System namespace CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

// Đầu ra:

System.IndexOutOfRangeException: Chỉ mục nằm ngoài giới hạn của mảng.
tại CSharpProgram.SystemExceptionExample.Main (String [] args) trong F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: dòng 11

Đồng bộ hóa

Đồng bộ hóa có thể là một kỹ thuật cho phép chỉ 1 luồng truy cập tài nguyên trong một thời gian cụ thể. Không có luồng thay thế nào sẽ ngắt cho đến khi luồng được chỉ định hoàn thành nhiệm vụ của nó.

Trong chương trình đa luồng, các luồng được phépđể truy cập bất kỳ tài nguyên nào chothực hiện cụ thểthời gian. Các luồng chia sẻ tài nguyên và thực thi không đồng bộ. Truy cập tài nguyên được chia sẻ (dữ liệu)có thể là một nhiệm vụ quan trọngnói chung làcó thể dừng lạihệ thống.chúng tôi có xu hướng ảnh hưởng đến nóbằng cách tạo luồng một cách đồng bộ.

Ví dụ không có đồng bộ hóa

using System using System.Threading class 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() } } 

// Đầu ra:

một
một
2
2
3
3
4
4
5
5
6
6
7
7
số 8
số 8
9
9
10
10

Ví dụ với đồng bộ hóa

using 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() } } 

// Đầu ra:

một
2
3
4
5
6
7
số 8
9
10
một
2
3
4
5
6
7
số 8
9
10

Các tính năng mới

Microsoft đã thêm nhiều tính năng mới nhất cho ngôn ngữ C #, một số tính năng được đề cập dưới đây.

làm thế nào để chuyển đổi từ double sang int java

C # 6.0

  • Sử dụng chỉ thị tĩnh
  • Bộ lọc ngoại lệ
  • Đang chờ các khối bắt / cuối cùng
  • Bộ khởi tạo thuộc tính tự động
  • Giá trị mặc định cho thuộc tính chỉ dành cho người nhận
  • Thành viên thể hiện
  • Người truyền bá Null
  • Nội suy chuỗi
  • Toán tử Nameof
  • Trình khởi tạo từ điển
  • Trình biên dịch dưới dạng dịch vụ (Roslyn)

C # 7.0

  • Khớp mẫu
  • Tuples
  • Giải cấu trúc
  • Chức năng địa phương
  • Dấu phân tách chữ số
  • Chữ nhị phân
  • Giới thiệu trả hàng và người dân địa phương
  • Các công cụ xây dựng và hoàn thiện cơ quan biểu thức
  • Bộ định tuyến và bộ định tuyến thể hiện biểu thức
  • Các biến số
  • Các kiểu trả về không đồng bộ tổng quát

C # 7.1

  • Không đồng bộ chính
  • Biểu thức mặc định

Câu hỏi phỏng vấn dựa trên C #

Các câu hỏi phỏng vấn quan trọng dựa trên Ngôn ngữ lập trình C # có thể được tìm thấy trong bản cập nhật này .

Với điều này, chúng ta đến phần cuối của bài viết “Hướng dẫn C #”. Tôi hy vọng bạn đã hiểu tầm quan trọng của Cấu trúc dữ liệu, Cú pháp, chức năng và các hoạt động được thực hiện bằng cách sử dụng chúng. Bây giờ bạn đã hiểu cơ bản về Lập trình trong C # qua phần nàyHướng dẫn C #, kiểm tra đào tạo cung cấp của Edureka trên nhiều công nghệ như Java, Mùa xuân và nhiềuhơn thế nữa, một công ty học tập trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu đã câu hỏi cho chúng tôi? Đề cập đến nó trong phần nhận xét của blog “Hướng dẫn C #” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.