có rất nhiều lần, trong đó tôi có một văn bản đầu vào,C# chuỗi rỗng -> null?
và nếu có sản phẩm nào của nó (người dùng didnt gõ bất kỳ văn bản) - tôi muốn gửi đến các truy vấn DB "null"
và khôngString.Empty.
(hoặc "")
vì vậy tôi tìm thấy bản thân tôi đây làm rất nhiều:
var mySqlValue = string.IsNullOrEmpty(tbCustomerId.Text)?null:tbCustomerId.Text;
này có vẻ xấu xí với tôi.
.net cung cấp cho rất nhiều giải pháp khác cho các kịch bản ngược lại:
string.IsNullOrEmpty
string.IsNullOrWhiteSpace
myProblemVal ?? myDefultVal
Tôi biết điều này có thể được giải quyết bằng phương pháp mở rộng - và tôi biết làm thế nào để làm điều đó ..
nhưng có điều gì tốt hơn không?
có bất kỳ mã thông minh nào cho: "if its empty -> null
".
Ngoài ra còn có vấn đề sau: Nếu '.Text' là thuộc tính (tức là một cuộc gọi đến accessor' get'), lần đầu tiên getter được gọi, nó có thể trả về một chuỗi dài, nói "John Doe" '. Chúng ta có thể đánh giá "thành phần" cuối cùng của toán tử điều kiện bậc ba '?:'. Nhưng điều này gọi hàm getter 'Text' một lần nữa, và lần này nó có thể trả về' "" '. Vì vậy, trong priciple bạn phải lấy một bản sao biến cục bộ của 'Text'. Điều này là không cần thiết, tất nhiên, nếu bạn sử dụng một phương pháp mở rộng. –
Nếu bạn sử dụng một phương pháp mở rộng, bạn có thể 'Trim()' chuỗi đầu tiên trước khi kiểm tra, đó là khó khăn để làm trong biểu thức duy nhất. – toddmo