Trang chủ Thủ Thuật Có gì mới trong C # 10?

Có gì mới trong C # 10?

0
12
Illustration of C# text overlay on a photo of a laptop

Có gì mới trong C # 10?

Illustration of C# text overlay on a photo of a laptop
Maria Vonotna / Shutterstock.com

C # 10 được phát hành vào tháng 11 năm 2021 cùng với Visual Studio 2022 và .NET 6. Nó bổ sung một số tính năng mới giúp làm việc dễ dàng và thuận tiện hơn. Đây là chuyến tham quan về một số bổ sung hữu ích nhất và cách chúng sẽ cải thiện quy trình làm việc của bạn.

Không gian tên có phạm vi tệp

Hãy bắt đầu với một trong những thay đổi đơn giản nhất nhưng có lẽ quan trọng nhất. Bây giờ bạn có thể áp dụng một không gian tên cho toàn bộ tệp thông qua một tùy chọn cú pháp mới cho từ khóa namespace Đoạn mã còn lại bên trong tệp sẽ được tự động đặt vào vùng chứa tên, ngay cả khi nó không được thụt lề bên trong khối namespace Điều này hoạt động tương tự như khai báo không gian tên trong PHP.

Trong C # 9, bạn cần mã này để tạo không gian tên cho một lớp:

 Demo không gian tên {
 
    Ví dụ về lớp công khai { }
 
}

Trong C # 10, bạn có thể sử dụng những điều sau thay thế:

 Demo không gian tên ;
 
Ví dụ về lớp công khai { }

Điều này giúp bạn tiết kiệm một số không gian theo chiều ngang trong trình chỉnh sửa của mình bằng cách cắt bỏ mức thụt lề. Nếu tệp cần chứa nhiều lớp, bạn có thể viết tất cả chúng bắt đầu từ cột 0 – namespace áp dụng cho toàn bộ tệp.

Sử dụng toàn cầu

Một số không gian tên được sử dụng rất rộng rãi trong các dự án. Tuy nhiên, bạn vẫn cần đưa chúng theo cách thủ công vào mỗi tệp với câu lệnh using

Quảng cáo

C # 10 thay đổi điều này để hỗ trợ một biến thể global using Điều này sẽ làm cho không gian tên được tham chiếu có thể truy cập được trên tất cả các tệp trong dự án của bạn.

 Hệ thống sử dụng toàn cầu ;

Việc sử dụng toàn cầu có thể được thêm vào bất kỳ tệp nào sẽ có trong phần biên dịch của bạn. Chúng hỗ trợ tất cả các tính năng của using tiêu chuẩn, bao gồm static và bí danh với = .

Việc sử dụng toàn cầu sẽ cắt giảm số dòng bạn viết nhưng chúng vẫn được dành tốt nhất cho các không gian tên thường được tham chiếu ít có khả năng xảy ra va chạm đặt tên. Hãy lưu ý rằng việc dựa vào global using có thể làm cho mã của bạn trở nên mờ nhạt hơn, vì những người đóng góp mới có thể không nhận ra ngay lập tức tài nguyên không gian tên đã được đưa vào như thế nào.

Một tính năng đồng hành với việc sử dụng toàn cầu là việc sử dụng ngầm. Điều này tự động tạo global using câu lệnh phù hợp với loại dự án của bạn. Tính năng này được bật theo mặc định trong các mẫu dự án .NET 6. Nó có thể bị vô hiệu hóa bằng cài đặt ImplicitUsings trong tệp .csproj

Cải tiến cấu trúc

Các cấu trúc đã nhận được một số cải tiến giúp chúng trở nên ngang bằng hơn với các lớp. Chúng bao gồm các hàm tạo không tham số, bộ khởi tạo trường, hỗ trợ đầy đủ cho with biểu thức và tùy chọn tạo cấu trúc bản ghi:

 bản ghi công khai Point ( int X, int Y ) ;

Ví dụ này tạo cấu trúc bản ghi “vị trí” trong đó các XY trở thành thành viên công khai ngầm định. Bạn cũng có thể xác định thủ công các thành viên bằng cú pháp hiện có:

 bản ghi công khai struct Point { public int X { get ; init ; } public int Y { get ; init ; } }
Quảng cáo

Một cấu trúc bản ghi nên được sử dụng trong các tình huống mà bạn cần đóng gói một số dữ liệu mà không đính kèm các hành vi tùy chỉnh dưới dạng các phương thức lớp. Cấu trúc bản ghi cung cấp các tính năng và kiểm tra bình đẳng giá trị tích hợp như ToString() . Nó có thể có thể thay đổi hoặc bất biến thông qua từ khóa readonly

Các cải tiến về biểu thức Lambda

C # 10 bổ sung một số cải tiến cho các biểu thức lambda bao gồm các kiểu và cú pháp của chúng. Mục tiêu là làm cho lambdas giống với các phương thức thông thường và các hàm cục bộ. Định nghĩa một cái bây giờ sẽ là một trải nghiệm quen thuộc hơn.

Khái niệm về kiểu “tự nhiên” đã được đưa ra. Điều này cho phép trình biên dịch suy ra kiểu của lambda mà không cần chuyển đổi theo cách thủ công thành đại biểu hoặc biểu thức. Điều này tạo ra mã dễ đọc hơn khi gán lambda cho một biến:

 // C # 9
Hàm < string , int > toInt = ( string s ) => int . Parse (s);
 
// C # 10 var toInt = ( string s ) => int . Parse (s)

Trình biên dịch sẽ suy ra loại toIntFunc<string, int> và điều này sẽ được hiển thị khi bạn xem mã trong Visual Studio. Các tham chiếu sẽ sử dụng Func , Action hoặc các đại biểu tổng hợp.

Kiểu tự nhiên sẽ chỉ hoạt động khi biểu thức lambda của bạn đã được nhập đầy đủ. Nếu bạn bỏ qua các kiểu tham số, trình biên dịch sẽ không thể tạo định nghĩa kiểu tương thích.

Một thay đổi liên quan là hỗ trợ cho các loại trả lại rõ ràng. Giống như với một hàm thông thường, kiểu trả về đi trước danh sách tham số của lambda:

 var toInt = int ( string s ) => int . Parse (s)

Cuối cùng, lambdas bây giờ có thể nhận các thuộc tính giống như các phương thức và hàm. Chúng được đặt ở đầu biểu thức lambda, trước kiểu trả về và danh sách tham số. Bạn có thể sử dụng các thuộc tính để đính kèm siêu dữ liệu bổ sung vào lambdas của mình để hỗ trợ phân tích mã và nội dung tốt hơn.

 var toInt = [ DemoAttribute ( ) ] int ( string s ) => int . Parse (s)

Các nhiệm vụ được cấu trúc linh hoạt

Phép gán giải cấu trúc giờ đây có thể vừa khởi tạo các biến mới vừa có thể gán giá trị cho các biến hiện có trong cùng một dòng. Trước đây, bạn cần sử dụng các giải cấu trúc riêng biệt cho các hoạt động này.

Quảng cáo

Trong C # 9, điều này dẫn đến mã trông giống như sau:

 int x = 0 ; int y = 0 ; ( x, y ) = điểm ;
 
( int z ) = điểm ;

Trong khi trong C # 10, bạn có thể làm điều này:

 int x = 0 ; int y = 0 ; ( x, y, int z ) = point ;

Bây giờ x , yz tất cả sẽ được khởi tạo với các giá trị bằng cách sử dụng phép gán giải cấu trúc đơn lẻ, giảm sự lặp lại trong mã của bạn.

Các thay đổi khác

Nội suy chuỗi đã được cải thiện và giờ đây cũng hoạt động với các chuỗi không đổi. Bạn cần đảm bảo rằng tất cả các chuỗi được sử dụng để lấp đầy các lỗ giữ chỗ của bạn trong quá trình nội suy đều là các giá trị không đổi. Nói rộng hơn, việc tối ưu hóa quy trình nội suy có thể làm giảm việc sử dụng bộ nhớ và tăng hiệu suất thông qua việc sử dụng các trình xử lý chuyên dụng.

Các mẫu thuộc tính đã được đơn giản hóa để cung cấp khả năng truy cập dễ đọc hơn vào các thuộc tính lồng nhau. Giờ đây, bạn có thể sử dụng cú pháp dấu chấm để truy cập các giá trị thuộc tính lồng nhau, thay vì nhiều lớp dấu ngoặc đơn:

 // C # 9 { Train : { ArrivalTime : "10:00" } }
 
// C # 10 { Tàu hỏa . Thời gian đến : "10:00" }

Ở những nơi khác, tối ưu hóa trình biên dịch có nghĩa là bạn sẽ được hưởng lợi từ ít sai lệch hơn trong quá trình chuyển nhượng xác định và kiểm tra trạng thái rỗng. Một số vấn đề C # 9 gây ra cảnh báo giả tại thời điểm biên dịch đã được giải quyết, dẫn đến việc kiểm tra chính xác hơn được trang bị tốt hơn để giúp bạn gỡ lỗi các vấn đề thực sự quan trọng. Các vấn đề liên quan đến việc sử dụng các biểu thức liên kết rỗng và so sánh biến với hằng số boolean.

Phần kết luận

C # 10 bổ sung một số khả năng mới sẽ giúp phát triển dễ dàng hơn. Tuy nhiên, nhiều tính năng mới khác bao gồm field và các thuộc tính bắt buộc đã được đẩy trở lại bản phát hành chính tiếp theo. Các thuộc tính chung và các thành viên trừu tượng tĩnh cho các giao diện đã làm cho nó thành 10 nhưng với thẻ xem trước vẫn được đính kèm.

Quảng cáo

Bạn có thể bắt đầu sử dụng C # 10 ngay hôm nay bằng cách tải xuống Visual Studio 2022. Ngôn ngữ này cũng có sẵn như một phần của .NET 6 SDK độc lập hoạt động trên Windows, Mac và Linux.

How to Get Started With DevSpace and Rapidly Develop Kubernetes Apps

Cách bắt đầu với DevSpace và phát triển nhanh ứng dụng Kubernetes

How To Switch a Github Repository to SSH Authentication

Cách chuyển Kho lưu trữ Github sang Xác thực SSH

How to Run MongoDB in a Docker Container

Cách chạy MongoDB trong Docker Container

How To Switch a Github Repository to SSH Authentication

Cách tải xuống các tệp đơn từ kho lưu trữ Github

How To Switch a Github Repository to SSH Authentication

Cách sao chép hoặc tải xuống một nhánh cụ thể từ Github

How to Restart Kubernetes Pods With Kubectl

Cách khởi động lại Kubernetes Pods bằng Kubectl

Dịch từ: https://www.cloudsavvyit.com/14834/whats-new-in-c-10/

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây