NHỮNG ĐIỀU THÚ VỊ VỀ .NET
Nội dung chính
- Các tham số luôn thay đổi giá trị
- Sử dụng HashSet cho những phần tử riêng biệt
- Các biến trong hàm có thể đặt trong chỉ dấu ngoặc
- Thứ tự khai báo các biến tĩnh trong mã nguồn cần được chú ý
- Các biến đối tượng riêng của một lớp có thể được truy cập bởi các đối tượng khác
- Chỉ mục có thể sử dụng nhiều tham số
Hybrid Technologies muốn chia sẻ với các bạn những kiến thức thú vị về .NET sau khi tổng hợp qua quá trình làm việc, thảo luận. Nếu bạn đang trên con đường “theo đuổi” .NET hay đơn giản là bạn yêu thích ngôn ngữ này và muốn có thêm nhiều kiến thức về nó, đừng bỏ qua bài viết này của chúng mình nhé!
Các tham số luôn thay đổi giá trị
Dưới đây là một ví dụ đơn giản:
|
Giá trị của testParameter sẽ thay đổi như thế nào sau khi TryParse được thực thi?
Các bạn có thể tự mình kiểm tra được bằng cách đặt nó trong console application và hiển thị kết quả của testParameter, nếu bạn mong đợi giá trị của nó sẽ là -1, bạn đã nhầm. Ngay cả khi TryParse không thực thi thành công, giá trị của biến số nguyên (int) sẽ trở về giá trị mặc định, vì vậy nó sẽ là 0 (zero). Và đây là những gì MSDN nói về các tham số: This parameter is passed uninitialized; any value originally supplied in result will be overwritten.
(Tạm dịch “Tham số này được thông qua chưa được khởi tạo; mọi giá trị ban đầu được cung cấp trong kết quả sẽ được ghi đè.”)
Sử dụng HashSet cho những phần tử riêng biệt
Dưới đây là ví dụ một đoạn code ở khá nhiều dự án:
|
Có vấn đề gì với đoạn code này? Dĩ nhiên là không, nó hoạt động nhưng sẽ là vấn đề hiệu suất khi sử dụng quá nhiều. Trước đây với .NET 3.0 mọi người thường tạo các “Dictionaries” với các khóa sưu tập (key collection) cho các danh sách riêng biệt với các giá trị được gán là NULL. Nhưng kể từ .NET Framework 3.5 chúng ta có class có tên gọi là HashSet<T>. Đó là một collection mà không có bất kì sự trùng lặp phần tử nào.
Và như vậy đoạn code nhanh hơn sẽ là:
|
Thậm chí, chúng ta có thể loại bỏ Contains bởi vì Add sẽ không thêm phần tử khi bị trùng lặp và chỉ trả lại False (hoặc True nếu đã thêm được phần tử). Và một lần nữa code của chúng ta sẽ trở thành:
|
Vậy là chúng ta đã cải thiện được hiệu suất đáng kể cho project.
Các biến trong hàm có thể đặt trong chỉ dấu ngoặc
Trong Pascal, bạn phải khai báo tất cả các biến mà hàm của bạn sẽ sử dụng khi thực thi hàm. Rất may ngày nay chúng ta có thể vừa khởi tạo, gán giá trị và dùng luôn, điều này ngăn ngừa việc vô tình sử dụng biến trước khi bạn muốn. Mặt hạn chế là việc này dừng bạn sử dụng nó khi bạn muốn. Cho phép dùng luôn các câu lệnh điều kiện và lặp như / if / while / use,… điều đáng ngạc nhiên là bạn có thể khai báo các biến trong dấu ngoặc mà không cần từ khóa để đạt được kết quả tương tự:
|
Việc này khá hữu ích, khối lệnh thứ hai sẽ được biên dịch như một giải pháp ưu tiên, điều đó tốt hơn là chia hàm của bạn thành các thành phần nhỏ hơn bằng cách sử dụng phương thức tái cấu trúc trích xuất.
Thứ tự khai báo các biến tĩnh trong mã nguồn cần được chú ý
Một số người cho rằng các biến tĩnh được sắp xếp theo thứ tự bảng chữ cái và có những công cụ có thể sắp xếp lại các biến đó cho bạn, tuy nhiên có một kịch bản sắp xếp lại biến tĩnh có thể phá vỡ ứng dụng của bạn.
|
Đoạn mã trên sẽ in giá trị 5. Hoán đổi vị trí khai báo cho a và b và nó sẽ xuất **.
Các biến đối tượng riêng của một lớp có thể được truy cập bởi các đối tượng khác
Bạn có thể nghĩ đoạn mã sau đây sẽ hoạt động:
|
Chúng ta dễ dàng nghĩ đến thuộc tính private nghĩa là chỉ có lớp chứa đối tượng này mới truy cập được chúng nhưng thực tế là kể cả các đối tượng khác của lớp này cũng có thể truy cập được nó. Điều này thực sự khá hữu ích trong một số phương pháp so sánh.
Chỉ mục có thể sử dụng nhiều tham số
Chúng ta đều biết biểu mẫu lập chỉ mục thông thường
x = Something [“a”] và để thực hiện nó, bạn viết:
|
Nhưng bạn có biết rằng bạn có thể sử dụng thông số để cho phép viết như thế này x = something[“a”, “b”, “c”, “d”]?
Đơn giản chỉ cần viết chỉ mục của bạn như sau:
|
Điều thú vị là bạn có thể có cả hai bộ chỉ mục trong cùng một lớp. Nếu bạn vượt qua một mảng hoặc nhiều đối số, bạn sẽ nhận được một IEnumerable được gọi với một đối số duy nhất và nhận được một giá trị duy nhất.
Nguồn tham khảo: Hackernoon