Tôi đang đọc C # hiệu quả của Bill Wagner. Trong Mục 14 - Giảm thiểu Logic Khởi tạo Trùng lặp , anh ấy chỉ ra ví dụ sau về việc sử dụng tính năng tham số tùy chọn mới trong một hàm tạo:
public MyClass(int initialCount = 0, string name = "")
Chú ý rằng anh ấy đã sử dụng ""
thay vì string.Empty
.
Anh ấy bình luận:
Bạn sẽ lưu ý [trong một ví dụ ở trên] rằng hàm tạo thứ hai đã chỉ định "" cho giá trị mặc định trên tham số tên , thay vì tùy chỉnh hơn
string.Empty
. Đó là vìstring.Empty
không phải là hằng số thời gian biên dịch. Nó là một thuộc tính tĩnh được định nghĩa trong lớp chuỗi. Bởi vì nó không phải là một hằng số biên dịch, bạn không thể sử dụng nó cho giá trị mặc định cho một tham số.
Nếu chúng ta không thể sử dụng string.Empty
static trong mọi tình huống, thì điều đó không đánh bại mục đích của nó sao? Tôi nghĩ rằng chúng tôi sẽ sử dụng nó để đảm bảo rằng chúng tôi có một phương tiện độc lập với hệ thống để tham chiếu đến chuỗi trống. Sự hiểu biết của tôi có sai không? Cảm ơn.
CẬP NHẬT
Chỉ là một bình luận tiếp theo. Theo MSDN:
Mỗi tham số tùy chọn có một giá trị mặc định như một phần của định nghĩa của nó. Nếu không có đối số nào được gửi cho tham số đó, giá trị mặc định sẽ được sử dụng. Giá trị mặc định phải là hằng số.
Sau đó, chúng tôi không thể sử dụng System.Environment.NewLine
hoặc sử dụng các đối tượng mới được khởi tạo làm giá trị mặc định. Tôi chưa sử dụng VS2010, và điều này thật đáng thất vọng!