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 #
- Lập trình hướng đối tượng
- Các khái niệm C # nâng cao
- Câu hỏi phỏng vấn dựa trên C #
Kiến thức cơ bản về C #
- Giới thiệu về ngôn ngữ lập trình C #
- Các tính năng của ngôn ngữ lập trình C #
- Cài đặt
- Cấu trúc chương trình C #
- Loại dữ liệu
- Biến
- Các nhà khai thác
- Vòng lặp
- Có điều kiện
- Dây
- Mảng
- Bộ sưu tập
- Kết cấu
- Chức năng
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.
Đó 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 là 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:
- Câu lệnh if
- Câu lệnh If-Else
- Câu lệnh If-else lồng nhau
- Thang If-Else If
- 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
Là
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ỗi và chuỗ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 StringThí 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ảngTươ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ảngThí 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
5
Akash
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ụ InformaticaCác SortedList Làmộ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ệu và phươ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 #
- Phương pháp tiếp cận lập trình hướng đối tượng
- Quá tải và ghi đè
- Không gian tên
- Thao tác tệp
- Sự kiện
- Generics
- Đại biểu
- Suy ngẫm
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
LÀ
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í dụ:
- thử
- nắm lấy
- cuối cùng, và
- phi
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: ExceptionTrì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
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 javaC # 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.