Như đã nêu trong tài liệu cho phương thức khởi tạo đó:
Đơn giản là bạn đang gọi một hàm tạo khác với những gì bạn nghĩ trong trường hợp của mình.
Lý do cho điều này là C # cho phép một ẩn chuyển đổi từ chữ số nguyên 0
thành các kiểu enum (chỉ là các kiểu tích phân bên dưới) và sự chuyển đổi ngầm này gây ra (string, SqlDbType)
hàm tạo để phù hợp hơn với độ phân giải quá tải so với chuyển đổi quyền anh cần thiết để chuyển đổi int
đến object
cho (string, object)
phương thức khởi tạo.
Điều này sẽ không bao giờ là vấn đề khi bạn chuyển một int
biến , ngay cả khi giá trị của biến đó là 0
(bởi vì nó không phải là một chữ số 0) hoặc bất kỳ biểu thức nào khác có kiểu int
. Nó cũng sẽ không xảy ra nếu bạn truyền int
một cách rõ ràng đến object
như đã thấy ở trên, bởi vì khi đó chỉ có một quá tải phù hợp.