有人說String.IsNullOrEmpty有BUG,我不信并且問怎么寫才沒有bug?
他說用IF寫就沒有BUG
if xx isnot nothing andalso xx.length <>0
然后我看了下String.IsNullOrEmpty的原始碼就困惑了,到底有BUG嗎?






uj5u.com熱心網友回復:
你就想表達trim這個意思么那么可以試試IsNullOrWhiteSpace
話說trim一下多大事啊,難道你從不trim??
uj5u.com熱心網友回復:
String.IsNullOrEmpty本身應該沒有BUG,應該是他的條件里面有空格,就是:“ ”;不知道是不是這個原因
uj5u.com熱心網友回復:
看截圖呀…………………
uj5u.com熱心網友回復:
trim其實是常規操作,正常的資料基本都需要trim,不trim資料都不一定對,比如條件搜索,比如基礎資料庫(除非有特殊要求,他必須嚴格保留)說到這個問題,來講個笑話
某天xxx產品經理突然在大群里發火,接個圖說“一群吃干飯的開發,用戶登錄,用戶名顯示為null,這么大的bug擺了n天沒人理”
xxx老總跟著說“對,這是嚴重問題,必須嚴肅對待,立刻解決”
2小時后,“開發說經過查證,不存在問題,那個用戶的注冊名就叫null”
uj5u.com熱心網友回復:
ps:連js的jquery,都專門為你們搞了個$.trim(),你們覺著呢?那么javascript這個bug存在了多久?uj5u.com熱心網友回復:
為什么會說到trim的問題上?~~~~~~~關注點漂移了喲uj5u.com熱心網友回復:
沒聽說過有什么bug,更不可能至今未修復他認為未修復,你讓他反映到巨硬那里去不就好了
uj5u.com熱心網友回復:
沒啥漂移不漂移,你不就想說,他寫的一個人家微軟的一個叼樣,是個2B。不trim都這樣么。
uj5u.com熱心網友回復:
我覺得,他可能測驗到了不可見字符吧其實,他直接比較兩個字串長度,也能夠知道的。
uj5u.com熱心網友回復:
一般來說,有bug,也不會至今未被修復了。uj5u.com熱心網友回復:
我只關心這個函式是否存在他說的BUG,我是不信的uj5u.com熱心網友回復:
我也不信
uj5u.com熱心網友回復:
截圖里的人沒有證明bug的例子,只是嘴巴上說。。。那我還懷疑是他代碼的問題了。
uj5u.com熱心網友回復:
他說讓我去問微軟,我就不信有bug所在來論壇問
uj5u.com熱心網友回復:
一個兩個說有bug的都沒提交過,都是張嘴就來,也沒啥好說的,他覺得有就有啊,早換java早走人最好,這樣的人和他一起作業我都覺得累。uj5u.com熱心網友回復:
他那么寫的原因只是他不想trim就像我有時候不想引入jquery的時候也直接用length
但是問題是這是前端的代碼,后端還有一次驗證,偷個懶問題不大
我們一直說trim,是說這是應該處理的。你偷個懶,后面還是要處理
比如查找“計算機a”,你like “%計算機a%”和 like “%計算機a %”(這個帶空格)一樣么
資料基本驗證是省不了的,做除法不驗證分母為0?資料庫里int,你不驗證這個是不是數字?
在說一個實際的事情
就半個月前,市場部門需要一份統計資料。資料需要從兩個庫里統計,結果統計資料有誤。市場部大大發了火,捅到上面。上面大大死命令,2小時必須出資料,同時扣做統計開發的績效,并罰500塊。
知道最后查出資料不對原因是什么?就是B系統偷懶沒有trim,導致一個關聯流水號多了一個空格,資料關聯不上
uj5u.com熱心網友回復:
trim在先,判定在后是正常邏輯判定在前,trim在后也行。只是你不能忘了
這不是bug,微軟可以幫你一起判斷比如IsNullOrWhiteSpace,但是你自己也得保證邏輯,真忘了就是挖坑了。
所以,個人習慣不挖坑。trim先。如果挖坑再填你的,你的記得填
uj5u.com熱心網友回復:
哦,我一直在用呢uj5u.com熱心網友回復:
老司機,請問這個是BUG嗎?
select ISNUMERIC('\')
有一些版本回傳是0有些版本回傳是1,請問是什么情況?
uj5u.com熱心網友回復:
這是bug?不知道還有個string.IsNullOrWhiteSpace方法嗎?應對string.IsNullOrEmpty不足之處uj5u.com熱心網友回復:
他雜那么厲害,不提交個BUG拿點錢嗎
uj5u.com熱心網友回復:
這種有啥好爭論的,他說有BUG你就讓他出一個測驗用例出來啊,他要是給不出來,光會說在某些情況下,說明他自己都不知道什么情況下會出BUG,那不知道就來怪函式未免也太弟弟了。uj5u.com熱心網友回復:
標題嘩眾取寵了一些,只有和檔案寫得不同,并且檔案不是筆誤,那么才能算buguj5u.com熱心網友回復:
讓他重現重現不出來就當放屁
uj5u.com熱心網友回復:
null 和 "" 和" "uj5u.com熱心網友回復:
null 和 "" 和" "uj5u.com熱心網友回復:
這個產品經理懂開發哎。
uj5u.com熱心網友回復:
就看看123456uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
搞笑的嘛???uj5u.com熱心網友回復:
當然知道string.IsNullOrWhiteSpace,不過焦點在他說用if的寫法就沒有bug我就不認可了,非要讓我去問微軟來證明bug的存在
uj5u.com熱心網友回復:
沒啥證明不證明的,你就回“拉不出屎不能怪別人”你不trim,說明你邏輯不嚴謹。就像說你除個0,軟體還能崩潰呢?怪微軟連個除0都不會?
先洗菜后切菜,養成習慣了,就沒問題。
我不怎么做飯,沒養成這習慣。家里那位經常問的一句是“菜洗了么”,我回“哦,忘了,沒洗,直接切了”
so,我能怪菜刀就是bug么?生產菜刀的為啥不在上面接跟水管,我一邊切他就一邊給我洗了
uj5u.com熱心網友回復:
如果他把這叫bug那微軟的bug多了去了,比如null
你干嘛每次都要寫 xxx?.xxx 或者xxx??""
或者
if(xxx!=null)
{
}
好大一個bug,微軟從出生就帶的bug,二三十年了,一個null都沒搞定。
人家只是提供了一個工具,他只是工具。邏輯自己保證。你覺著工具不好,沒問題。自己寫個擴展方法,也行啊。沒人攔著你
你就覺著刀上不加個滋水槍就是bug,沒問題。你把刀上加個滋水槍申請個專利,沒問題滴。
uj5u.com熱心網友回復:
沒有接觸過,知乎查一下吧uj5u.com熱心網友回復:
語言是一種工具,庫函式也是所謂的工具肯定不是萬能,人從來沒有創造出萬能的工具,就好比汽車,他不能飛,飛機他不能潛入海底。任何工具作用都是有界限的
工具不是阿里巴巴的神燈。想讓他干什么就干什么。
回到樓主的問題。string.isnullempty()這個函式有沒有bug,首先要確定什么為bug,
個人以為,所謂程式的bug,應該是,它做不到它所說明的功能,或者是大部分時間能做到,但個別情況下不行。
那么,就應該查一下他的說明書,看看他到底要實作什么功能,做得到或者做不到
以下摘自msdn關于這個函式的說明
String.IsNullOrEmpty(String) Method
Definition
Namespace:
System
Assemblies:
System.Runtime.dll, mscorlib.dll, netstandard.dll
Indicates whether the specified string is null or an empty string ("").
注意,這個函式的功能是判斷一個string是否為null或者是empty string("")
我想大家應該明白了吧?
uj5u.com熱心網友回復:
菜鳥前來圍觀學習uj5u.com熱心網友回復:
這個DY不管換什么語言,都自帶bug屬性。另外樓上一堆動不動就先trim的,難道不要根據業務來確定要不要用嗎。一篇文章人家好不容易敲幾個首尾換行統一風格,就被你trim了??。用戶故意或者非故意的填寫用戶名首尾敲空格,tirm一下也算合理,如果不允許出現空格,直接果斷拒絕也是合理合法的??
uj5u.com熱心網友回復:
需要理論么讓提bug的截圖啊
沒jb說個圖
uj5u.com熱心網友回復:
什么????問題啊,我們uj5u.com熱心網友回復:
先搞清楚“”和“ ”的區別string.IsNullOrEmpty("") 結果是true
string.IsNullOrEmpty(" ") 結果是false
string.IsNullOrEmpty(" ".Trim()) 結果是true,等效于第一個
空字串和空格字串是不一樣的
IsNullOrEmpty 指的就是null或者空字串
uj5u.com熱心網友回復:
忘了說了,還有就是一個我們容易混淆的點:string.Empty不分配存盤空間,
""分配一個長度為空的存盤空間,
C#很多地方,兩者通用。我個人用string.Empty用的多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/119033.html
標籤:VB.NET
上一篇:Windows7、10的熱鍵屏蔽
