Mã này là không hợp lệ:C# 4.0 - Làm thế nào để xử lý chuỗi tùy chọn thông số
private void Foo(string optionalString = string.Empty)
{
// do foo.
}
Nhưng mã này là:
private void Foo(string optionalString = "")
{
// do foo.
}
Tại sao? Vì string.Empty là một trường chỉ đọc, không phải là một hằng số và các giá trị mặc định cho các tham số tùy chọn phải là một hằng số biên dịch-thời gian.
Vì vậy, vào câu hỏi của tôi ... (tốt, mối quan tâm)
Đây là những gì tôi đã làm:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
// do foo.
if (!string.IsNullOrEmpty(optionalString))
// etc
}
Làm thế nào để các bạn xử lý các thông số chuỗi bắt buộc?
Tại sao họ không thể tạo String.Empty hằng số biên dịch?
tại sao không dính với ""? Đó là tất cả những gì tôi từng làm, nhưng đó cũng là vì tôi không hiểu lợi thế của việc sử dụng String.Empty. Phải là một điều unicode, nhưng tôi không bao giờ phải lo lắng về điều đó (ít nhất là chưa ... yikes) – Dave
Tôi nhầm lẫn lý do tại sao bạn nghĩ rằng bạn * cần * để làm điều này. Tôi cho rằng 'nullString' là một cái tên khó hiểu, bởi vì ngay từ cái nhìn đầu tiên tôi có khuynh hướng nghĩ rằng nó là' null', không phải '" "'. Đối với câu hỏi cuối cùng của bạn, hãy xem [ Tại sao không phải là String.Empty một hằng số? ] (http://stackoverflow.com/questions/507923/why-isnt-string-empty-a-constant). @ Dave, không có điều Unicode, ở đây. '" "' là tốt; xem thêm [ Trong C#, tôi có nên sử dụng string.Empty hoặc String.Empty hoặc “” không? ] (http://stackoverflow.com/questions/263191/in-c-should-i-use-string-empty-or-string-empty-or). –
Vui lòng đề cập đến phiên bản. – PrateekSaluja