Câu lệnh sử dụng C#

Cau Lenh Su Dung C



Khi xử lý các tài nguyên như kết nối cơ sở dữ liệu, luồng tài liệu hoặc kết nối mạng, câu lệnh “sử dụng” trong ngôn ngữ C# được sử dụng để đảm bảo việc xử lý thích hợp. Việc quản lý các đối tượng tuân thủ giao diện IDisposable được thực hiện đơn giản hơn bằng phương pháp này. Phần mã trong đó tài nguyên được tạo và sử dụng sẽ được tạo khi bất kỳ câu lệnh “sử dụng” nào được khai báo. Nếu một quá trình xử lý thông thường hoặc một ngoại lệ được sử dụng để thoát khỏi khối, hàm Dispose() của đối tượng sẽ ngay lập tức được gọi để giải phóng mọi tài nguyên không được kiểm soát và thực hiện mọi hoạt động dọn dẹp cần thiết. Trong hướng dẫn này, chúng tôi sẽ đề cập đến các tài nguyên luồng tài liệu bằng cách sử dụng câu lệnh “using” C#.

Cú pháp:

Câu lệnh “using” trong C# được sử dụng để quản lý các tài nguyên cần được xử lý rõ ràng một cách thuận tiện và an toàn. Nó tuân theo một cú pháp cụ thể như sau:

sử dụng ( Loại tài nguyên = Loại tài nguyên mới ( ) ) { // Mã số }
  • Từ khóa “using” được sử dụng để khai báo câu lệnh “using”.
  • Sau từ khóa “using”, bạn chỉ định loại tài nguyên mà bạn muốn làm việc, theo sau là tên biến đại diện cho tài nguyên trong khối. Bất kỳ đối tượng nào thực hiện giao diện IDisposable đều đủ điều kiện. Bạn có thể thao tác trên tài nguyên trong khối nếu cần.
  • Tiếp theo, dấu bằng (=) được sử dụng để gán một thể hiện mới của loại tài nguyên cho biến.
  • Ở đây, từ khóa “mới” được sử dụng để tạo đối tượng mới thuộc loại tài nguyên.
  • Bất kỳ khởi tạo hoặc cấu hình bổ sung nào cũng có thể được thực hiện trong dấu ngoặc đơn sau từ khóa mới.
  • Cuối cùng, bạn đính kèm mã sử dụng tài nguyên trong dấu ngoặc nhọn {}.

Ví dụ 1:

Hãy bắt đầu với các ví dụ về mã C# để chứng minh cách sử dụng câu lệnh “using” C# trong bài viết này. Mã đã cho bao gồm một chương trình C# đọc nội dung của tệp văn bản bằng cách sử dụng lớp “StreamReader” trong câu lệnh “using”.







Chương trình bắt đầu bằng cách nhập các không gian tên cần thiết, System và System.IO, cung cấp các lớp cho hoạt động đầu vào/đầu ra và xử lý tệp. Chương trình định nghĩa một lớp có tên là “Dummy”. Bên trong lớp “Dummy”, có một phương thức Main() phải luôn được coi là mục nhập cho bất kỳ chương trình C# nào để thực thi chương trình tổng thể từ đầu đến cuối.



Phương thức Main() bắt đầu bằng cách khai báo biến chuỗi “fp” và gán cho nó giá trị “test.txt”. Điều này thể hiện đường dẫn tệp của tệp văn bản sẽ được đọc. Để đối phó với tất cả các lỗi có thể xảy ra khi đọc tệp, khối thử bắt được sử dụng.



Trong khối try, câu lệnh “using” được sử dụng để tạo một thể hiện của lớp “StreamReader”. Nhiệm vụ hiểu nội dung từ một tệp thuộc về “StreamReader”. Đường dẫn tệp được lưu trữ trong biến “fp” được chuyển đến hàm tạo “StreamReader” cho biết tệp sẽ được đọc.





Bên trong khối “using”, nội dung của tệp được kiểm tra từng dòng bằng vòng lặp “while” trừ khi dòng cuối cùng của tài liệu xuất hiện. Vòng lặp đọc một dòng bằng phương thức ReadLine() của “StreamReader” và gán nó cho biến chuỗi “l”. Nếu dòng này không phải là null, nó sẽ được in ra bảng điều khiển bằng Console.WriteLine(l).

Khi đến cuối tệp và không còn dòng nào để đọc nữa, khối “using” sẽ thoát và đối tượng “StreamReader” sẽ tự động bị loại bỏ do câu lệnh “using”. Khối bắt được kích hoạt bất cứ khi nào IOException phát sinh trong khi đọc tài liệu. Thông báo ngoại lệ được nhận bằng e.Message và thông báo lỗi được hiển thị trên bảng điều khiển bằng Console.WriteLine().



Việc thực hiện chương trình hoàn tất và đầu ra của bàn điều khiển được hiển thị. Giả sử rằng tệp “test.txt” tồn tại và chứa một số dòng văn bản, đầu ra của mã này là nội dung của tệp được in trên bảng điều khiển như hiển thị trong hình ảnh đính kèm sau. Mỗi dòng được hiển thị riêng biệt trong đầu ra:

sử dụng hệ thống ;

sử dụng Hệ thống. IO ;

lớp giả {

tĩnh trống rỗng Chủ yếu ( ) {

chuỗi fp = 'test.txt' ;

thử {

sử dụng ( Trình đọc StreamReader = StreamReader mới ( fp ) )

{

chuỗi l ;

trong khi ( ( tôi = người đọc. Đọc dòng ( ) ) != vô giá trị )

{

Bảng điều khiển. Viết dòng ( tôi ) ;

}

}

}

nắm lấy ( IOException và ) {

Bảng điều khiển. Viết dòng ( 'Có lỗi: ' + Nó là. Tin nhắn ) ;

}

}

}

Ghi chú: Nếu tệp “test.txt” không tồn tại hoặc có vấn đề với việc truy cập hoặc đọc tệp, khối bắt sẽ được thực thi và thông báo lỗi sẽ hiển thị trên bảng điều khiển cho biết ngoại lệ cụ thể đã xảy ra.

Ví dụ 2:

Đây là một ví dụ đơn giản khác minh họa cách sử dụng câu lệnh “using” trong C# với StreamWriter để ghi dữ liệu vào một tệp. Đây là phần giải thích về mã cùng với kết quả đầu ra dự kiến. Mã bắt đầu bằng việc khai báo lớp 'Dummy' và phương thức 'Main', cuối cùng sẽ bắt đầu và kết thúc chương trình.

Trong phương thức “Main”, biến chuỗi “fp” được khai báo và khởi tạo bằng đường dẫn tệp “test.txt”. Tài liệu mà thông tin được viết trên đó được thể hiện bằng điều này. Để xử lý bất kỳ ngoại lệ IOException nào có thể phát sinh trong suốt quá trình viết tài liệu, chương trình được đặt trong một khối try-catch.

Bên trong khối try, một đối tượng StreamWriter có tên là “writer” được tạo và khởi tạo bằng câu lệnh “using”. StreamWriter chịu trách nhiệm ghi các ký tự vào một tập tin. Hai dòng nội dung riêng biệt được thêm vào tài liệu bên trong phần “đang sử dụng” thông qua chức năng WriteLine của đối tượng người viết. Sau khi thoát khỏi khối, phương thức Dispose() của StreamWriter sẽ tự động được gọi để đảm bảo rằng mọi dữ liệu đang chờ xử lý sẽ được ghi vào tệp và các tài nguyên cần thiết sẽ được giải phóng.

Cuối cùng, bên ngoài khối “đang sử dụng”, khối “Dữ liệu được ghi thành công”. thông báo hiển thị trên bảng điều khiển chứng tỏ thao tác ghi tài liệu thành công và không có lỗi. Khối bắt được kích hoạt nếu có bất kỳ ngoại lệ IOException nào xảy ra trong quá trình ghi tài liệu. Trong trường hợp đó, một thông báo lỗi cùng với thông báo ngoại lệ cụ thể sẽ được hiển thị trên bảng điều khiển.

sử dụng hệ thống ;

sử dụng Hệ thống. IO ;

lớp giả {

tĩnh trống rỗng Chủ yếu ( ) {

chuỗi fp = 'test.txt' ;

thử {

sử dụng ( Nhà văn StreamWriter = StreamWriter mới ( fp ) )

{

nhà văn. Viết dòng ( 'Xin chào, C-Sharp!' ) ;

nhà văn. Viết dòng ( 'Đây là văn bản thử nghiệm.' ) ;

}

Bảng điều khiển. Viết dòng ( 'Dữ liệu được ghi thành công.' ) ;

}

nắm lấy ( IOException và ) {

Bảng điều khiển. Viết dòng ( 'Xảy ra lỗi: ' + Nó là. Tin nhắn ) ;

}

}

}

Tóm lại, mã tạo một đối tượng StreamWriter bằng cách sử dụng câu lệnh “using”, ghi hai dòng văn bản vào một tệp và sau đó tự động loại bỏ StreamWriter. Nếu thao tác ghi thành công, phần mềm sẽ tạo ra thông báo thành công. Ngược lại, nó sẽ phát ra thông báo lỗi nếu xảy ra bất kỳ IOException nào.

Phần kết luận

Câu lệnh “sử dụng” trong C# cung cấp một phương pháp thực tế và an toàn để quản lý các tài nguyên yêu cầu xử lý rõ ràng. Bạn có thể đảm bảo rằng các quy trình dọn dẹp cần thiết được thực hiện tự động và giảm khả năng rò rỉ tài nguyên bằng cách đặt mức tiêu thụ tài nguyên trong khối “đang sử dụng”. Điều này làm tăng độ tin cậy của mã của bạn.