Tôi đang phân tích ví dụ của tôi theo các thuật ngữ chung vì nó được điểm qua mà không phải đi vào chi tiết vấn đề cụ thể của tôi.Cách đánh máy mạnh mẽ cho các chuỗi hoặc các lớp được niêm phong khác
Giả sử bạn có một loạt các phương thức lấy chuỗi làm tham số. Giả sử rằng một chuỗi là "tên đầu tiên của một người" và một chuỗi khác là "họ" của một người. Có thể có những chuỗi khác như "món ăn yêu thích".
Bây giờ, trong mã của bạn, bạn tiếp tục tìm lỗi thời gian chạy vì bạn đang nhận được các thông số được trộn lẫn. Bạn có thể chuyển đổi thứ tự của "tên đầu tiên" và "họ" hoặc sử dụng một khi bạn nên sử dụng thứ tự khác. Giá trị của các ngôn ngữ gõ mạnh là nó sẽ tìm thấy các lỗi này tại thời gian xây dựng thay vì thời gian chạy.
Vì vậy, một giải pháp có thể là chỉ lấy được các lớp từ chuỗi.
public class FirstName : String
{
}
public class LastName : String
{
}
Bây giờ, nếu bạn truyền nhầm loại chuỗi trình biên dịch sẽ khiếu nại. Điều trên không thể thực hiện được vì String được niêm phong. Ngoài ra, câu lệnh "using" sẽ không hoạt động (tôi nghĩ) vì trình biên dịch sẽ không phàn nàn khi tôi trộn chúng lên.
using LastName = String;
Chắc chắn, tôi có thể tạo các lớp bọc chuỗi và sau đó viết phương pháp chuyển đổi truyền, nhưng điều đó có vẻ rắc rối hơn giá trị.
Vui lòng không thêm tiền tố cho tiêu đề của bạn bằng "C#". Đó là những gì các thẻ cho. –
Tại sao không sử dụng các đối số được đặt tên (được giới thiệu trong phiên bản VS2010 của C#) để tránh việc chuyển đổi hoặc sắp xếp các vấn đề tham số, thay vì chỉ làm cho cuộc sống khó khăn hơn khi gõ mạnh hơn? http://msdn.microsoft.com/en-us/library/dd264739.aspx –