Trong VBA, nó sẽ tạo ra bất kỳ sự khác biệt nào nếu tôi so sánh một chuỗi hoặc tương tự, với vbNullString
thay vì đối với một chuỗi rỗng; ""
? Nếu có sự khác biệt nào giữa hai người?Có sự khác biệt nào giữa vbNullString và "" không?
Trả lời
vbNullString
và ""
khác nhau. Dưới đây là một trang web exerpt mô tả sự khác biệt sử dụng bộ nhớ.
"Đây là cách thông thường để xóa một biến chuỗi.
Text$ = ""
Thật là một sự lãng phí! Trước hết, chuỗi ""
mất 6 byte RAM mỗi khi bạn sử dụng nó. Hãy xem xét thay thế:?.
Text$ = vbNullString
Vì vậy, những gì là thế này vbNullString
là một hằng số VB đặc biệt mà biểu thị một chuỗi null ""
đen là một st trống nhẫn. Có một sự khác biệt quan trọng. Một chuỗi rỗng là một chuỗi thực. Một chuỗi rỗng không phải là. Nó chỉ là một số không. Nếu bạn biết ngôn ngữ C, vbNullString
là tương đương với NULL.
Đối với hầu hết các mục đích, vbNullString
tương đương với ""
trong VB. Sự khác biệt thực tế duy nhất là vbNullString
nhanh hơn để gán và xử lý và mất ít bộ nhớ hơn.
Nếu bạn gọi một số API hoặc thành phần không phải VB, hãy kiểm tra các cuộc gọi với vbNullString
trước khi phân phối ứng dụng của bạn. Hàm bạn đang gọi có thể không kiểm tra chuỗi NULL, trong trường hợp này nó có thể bị lỗi. Các hàm không phải VB nên kiểm tra NULL trước khi xử lý một tham số chuỗi. Với may mắn, chức năng cụ thể mà bạn đang gọi không làm điều đó. Trong trường hợp này, hãy sử dụng ""
. Thường API làm hỗ trợ vbNullString
và họ thậm chí có thể thực hiện tốt hơn với nó "
Phần còn lại của bài báo có thêm thông tin về chuỗi tối ưu hóa có thể được sâu sắc cũng
Full trang web:!. http://www.aivosto.com/vbtips/stringopt.html
This comparison nói rằng chỉ định ""
cho biến sử dụng 6 byte bộ nhớ trong khi sử dụng vbNullString
sẽ không sử dụng bất kỳ bộ nhớ nào.
Cá nhân tôi thích đánh giá độ dài của chuỗi. Nếu độ dài bằng 0, thì chúng tôi cũng đi đến kết luận rằng chuỗi là vbNullString
hoặc ""
. Phương pháp này được chấp nhận là phương pháp kiểm tra nhanh nhất đối với một số vbNullString
.
If Len(string) = 0 Then
Bạn có thể đọc một Len
vs vbNullString
vs ""
so here.
Có vẻ tốt, trừ khi có ai đó khác có nhiều thông tin hơn, tôi sẽ đánh dấu Tuy nhiên, bài viết cuối cùng bạn liên kết chỉ ra có sự khác biệt, mặc dù tác giả không biết nó là gì.Nó có thể tất nhiên là một cái gì đó đơn giản như bộ nhớ nó chiếm khi gán cho một biến, như bạn chỉ ra trước đó trong câu trả lời của bạn. – eirikdaude
Có một sự khác biệt, '" "' là một chuỗi có độ dài bằng không, 'vbNullString' là một con trỏ rỗng của kiểu' Chuỗi' (không trỏ đến một chuỗi). Với mục đích so sánh VB [ẩn sự khác biệt] (http://stackoverflow.com/questions/37035754/what-does-vb6-initialize-a-static-integer-to/37035879#comment61678413_37035879), nhưng đôi khi bạn muốn [bỏ ẩn nó] (http://stackoverflow.com/a/20909528/11683). – GSerg
- 1. Có sự khác biệt nào giữa RPC và IPC không?
- 2. Có sự khác biệt nào giữa CGRect và NSRect không?
- 3. Có sự khác biệt nào giữa MsgBox và MessageBox.Show không?
- 4. Có sự khác biệt nào giữa! == và! = Trong PHP không?
- 5. Có sự khác biệt nào giữa log4net.Config.BasicConfigurator.Configure() và log4net.Config.XmlConfigurator.Configure() không?
- 6. Có sự khác biệt nào giữa gluLookAt() và glFrustum() không?
- 7. Có sự khác biệt nào giữa `ListView.invalidateViews()` và 'Adapter.notifyDataSetChanged()' không?
- 8. Có sự khác biệt nào giữa React.render() và ReactDOM.render() không?
- 9. Có sự khác biệt nào giữa System.Windows.Clipboard và System.Windows.Forms.Clipboard không?
- 10. Có sự khác biệt nào giữa $ @ và "$ @" không?
- 11. Sự khác biệt giữa ". +" Và ". +?"
- 12. Sự khác biệt giữa $ * và $ @
- 13. Sự khác biệt giữa "**/* /" và "** /"?
- 14. Sự khác biệt giữa = và: =
- 15. Sự khác biệt giữa $ # và $ {# @}
- 16. Sự khác biệt giữa $ (...) và `...`
- 17. Sự khác biệt giữa. và #
- 18. Có sự khác biệt nào giữa '=' và Trong?
- 19. Có sự khác biệt nào giữa chỉ đọc và {get; }
- 20. Có sự khác biệt nào giữa UITableViewCellAccessoryDetailDisclosureButton và UITableViewCellAccessoryDisclosureIndicator
- 21. Có sự khác biệt nào giữa "center_horizontal | center_vertical" và "center"
- 22. Có sự khác biệt nào giữa cpython và python
- 23. có sự khác biệt giữa/mnt/sdcard và/sdcard không?
- 24. Sự khác biệt giữa Đơn vị và Không có gì?
- 25. Có sự khác biệt giữa "is" và isKindOfClass() không?
- 26. Sự khác biệt giữa sự khác biệt biểu tượng và sự khác biệt tự động?
- 27. Có sự khác biệt nào giữa hai vòng này không?
- 28. "URL có WWW và URL không có WWW" -Có sự khác biệt nào giữa chúng không?
- 29. Có sự khác biệt về sự khác biệt nào giữa tuần tự hóa nhị phân và XML không?
- 30. sự khác biệt giữa inventory_hostname và ansible_hostname
Xem nhận xét của Rob Bovey tại địa chỉ http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj