2008-11-20 23 views

Trả lời

4

Mã có được sử dụng bởi các ngôn ngữ khác không? Nếu vậy, điều đó sẽ làm giảm sự cân bằng đối với tình trạng quá tải trong khi vẫn còn nhớ câu trả lời của Hamish. Cụ thể, C# không hỗ trợ các tham số tùy chọn - tuy nhiên ...

Phải thừa nhận rằng điều này thực sự không ngăn người nào đó sử dụng mã của bạn từ C#, điều đó có thể là nỗi đau đối với họ.

Nếu có nhiều tham số và chúng đại diện một cách hợp lý, bạn có thể cân nhắc việc đóng gói chúng lại với nhau, giống như cách mà Process hoạt động với ProcessStartInfo. Đó là đặc biệt tốt đẹp từ C# do khởi tạo đối tượng.

Nếu điều này là để xây dựng, bạn cũng có thể xem xét mô hình trình xây dựng như là một biến thể của điều này. Ví dụ, trong Nghị định thư Buffers tôi có thể làm một cái gì đó như:

Person jon = new Person.Builder { Name="Jon", Age=32, 
            Spouse="Holly", Kids=3 }.Build(); 

mà kết thúc lên được rất có thể đọc được trong khi vẫn tạo ra một người trong một đi (trong một biểu thức, và không cần phải biến những người thân - thực sự là thông điệp loại là bất biến; nó chỉ là người xây dựng mà không phải là).

+0

Một "Pro" khác của quá tải là bạn có thể xem có bao nhiêu tham chiếu mà mỗi quá tải có. Somenthing bạn không thể làm với các tham số tùy chọn. – Burnsys

8

nếu tham số là tùy chọn (nghĩa là quá tải là tập con của các tham số mà chữ ký thủ tục đầy đủ chấp nhận) thì thông số mặc định hoặc tùy chọn sẽ có ý nghĩa hơn.

Nếu quá tải cho phép loại khác nhau cho tham số hoặc là tham số ngữ nghĩa khác nhau sẽ được diễn giải khác nhau theo thói quen thì quá tải sẽ có ý nghĩa hơn.

+0

câu trả lời tuyệt vời – baash05

0

FYI

Nếu bạn muốn thêm một tham số để một hàm hay phương pháp đó được gọi là từ hội đồng khác, sau đó:

Bạn có thể quá tải bằng cách làm cho một chức năng bổ sung với các tham số thêm. Hoặc bạn có thể thêm một tham số tùy chọn, NHƯNG: Bạn phải biên dịch lại tất cả các hội đồng gọi hàm này, ngay cả khi họ không cần phải sử dụng tham số tùy chọn mới! Đây không phải là những gì mọi người mong đợi (expecially những người sử dụng để làm thế nào VB6 hoạt động). Về cơ bản, bạn không thể trượt trong một tham số tùy chọn mới cho một hàm và mong đợi nó hoàn toàn tương thích ngược. Ngoài ra, như tôi hiểu nó, nếu bạn thay đổi những gì giá trị mặc định là, bạn cần phải xây dựng lại tất cả các hội đồng gọi điện thoại cho sự thay đổi để làm việc.

Các vấn đề liên quan