夜夜躁很很躁日日躁麻豆,精品人妻无码,制服丝袜国产精品,成人免费看www网址入口

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

代碼中比較兩個對象的內(nèi)容是否相等,使用“==”和Equals?不行!

0
分享至

公司的程序員小高在寫代碼的時候遇到一個問題,問題也很簡單,那就是小高在寫一個參數(shù)配置的頁面的時候,若界面參數(shù)發(fā)生了改變,那么需要彈窗提醒用戶是否保存參數(shù),可這個參數(shù)配置頁面有幾百個參數(shù)需要配置,如果要對所有參數(shù)與數(shù)據(jù)庫的參數(shù)進行逐一比對,那可是個大工程,小高嘗試了很多方法,結(jié)果都沒有達到預(yù)期的效果。



小高寫的參數(shù)配置頁面的原本操作邏輯是編輯完頁面數(shù)據(jù)后,點擊頁面的“返回”按鈕,不管頁面有沒有發(fā)生改變,均彈窗提示用戶是否保存配置的參數(shù)!

當(dāng)我看到小高的做法以后,我覺得小高開始的做法在用戶體驗上有點問題,因為用戶來這個界面不一定就是要改配置參數(shù),有可能就是看一眼,但每次返回時都要被彈窗詢問是否保存數(shù)據(jù),從用戶角度,這樣的軟件使用體驗肯定是有問題的。

所以,我跟小高說,不要每次都彈窗,而是當(dāng)配置發(fā)生變化時再彈窗!小高覺得我說的也有道理,但是,他隨之拋給了我一個問題。

據(jù)小高說,他也不是沒想過按照我的想法去做,但是,如果一個參數(shù)一個參數(shù)去比對,那么光驗證參數(shù)是否改動這塊的代碼就有成百上千行,這么寫不光累,代碼可能還不利于維護。

我問他:“用Equals不行嗎?”

小高跟我說,Equals他試過,即使兩個對象的內(nèi)容完全相等,使用Equals的比對結(jié)果仍然是False!

這讓我有點尷尬了,因為我被他這么一說,我才想起來,我似乎從來沒有用過Equals!

這得說到我倆的技術(shù)背景,都是C#!

在C#中大多數(shù)情況下,我們都只會使用“==”號來判斷兩個對象的值是否相等,之所以不常使用Equals,那是因為“==”和Equals大部分情況下作用是一樣的,對于值類型而言(比如1、2、3、4、5),因為值類型都是存儲在棧上,因此“==”和Equals判斷的都是兩個值類型的值是否相等。而對于引用類型而言,使用“==”就是比對兩個對象之間的棧地址是否相等,使用Equals就是比對兩個對象之間的堆地址是否相等,也就是Equals實際上比對的是兩個對象是否是對同一個對象的引用。

因此,假設(shè)有一個對象A,此時,如果給B賦值,B=A的情況下,使用Equals來比對,那么A和B是能劃上等號的。

再回到開始的需求,小高在參數(shù)配置頁面點擊“返回”時已經(jīng)將頁面上的數(shù)據(jù)重新new了一個對象,這里我們把這個對象看作B,而每次保存完成以后,需要對原本的參數(shù)對象進行重新賦值,這個原本的對象我們看作A,因此B對象(引用類型)的地址和A對象所引用的地址不管對于“==”來說還是Equals來說,其實比較得都是地址而不是內(nèi)容。因此,這么比的話永遠是False。

此時,小高找了一堆第三方庫,第三方庫其實能夠達到比對內(nèi)容的目的,但是,我把小高的找到的庫逐一看了一遍,無奈本人有強迫癥,非MIT開源協(xié)議的第三方庫,我認為都有商業(yè)風(fēng)險,于是,小高找的庫全軍覆沒!

最后,實在沒辦法,有問題,找百度,我找到了一個比較經(jīng)濟實惠又沒有商業(yè)風(fēng)險的做法,那就是將兩個需要比對的對象直接序列化成為Json字符串,然后拿兩個Json字符串進行比對!

這里要說到C#中的字符串(String)類型的特殊之處了!

眾所周知,字符串這個類型在大部分編程語言里,它都是引用類型,在C#里面也是,但是,特殊的地方在于,當(dāng)兩個字符串在進行比對的時候,其實比對的是字符串的值!(大家不用翻論文,總之就是這個意思)

所以,只要兩個Json字符串是一模一樣的,那么不管使用“==”還是使用Equals,得到的結(jié)果均是True,當(dāng)然了,我還是喜歡使用“==”來比對!



結(jié)語

到了這里,小高是算是解決了他所需要解決的問題,但是,我其實還是覺得不夠完美,可能最佳的解決方案是通過反射兩個對象里面的屬性,然后通過比對屬性的值來判斷兩個對象的內(nèi)容是否相等,但是,這無疑會將問題變得更加復(fù)雜,舉個很簡單的例子,假設(shè)一個對象中包含著另一個對象,而另一個對象又包含著另外一個對象……,而每個對象里面的屬性的數(shù)據(jù)類型可能還不一樣,需要逐一判斷,這無疑增加了代碼的復(fù)雜性,這種偏底層的東西,我是不愿意碰的!

況且,這也背離了我想要使用簡單的方法解決問題的初衷!

但是,我說得不完美,其實還包含了另外一層意思,因為我怕對象轉(zhuǎn)換成Json以后,Json的每一個屬性的位置會在最終轉(zhuǎn)換出來的字符串Json中發(fā)生變化,這樣兩個字符串就變得不相等了。

但是,我嘗試了很多次,發(fā)現(xiàn)無論我怎么轉(zhuǎn)換,最終兩個內(nèi)容完全一樣的不同對象,轉(zhuǎn)換出來的Json串都是一模一樣的。

所以,您認為將對象轉(zhuǎn)換成Json后進行比對這個方法靠譜嗎?有沒有其他風(fēng)險呢?

聲明:個人原創(chuàng),僅供參考

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
午評:變天了!A股風(fēng)格發(fā)生大轉(zhuǎn)變?

午評:變天了!A股風(fēng)格發(fā)生大轉(zhuǎn)變?

風(fēng)風(fēng)順
2025-10-14 12:05:57
余承東再談安全:鴻蒙智行車門鎖四重設(shè)計,小米SU7引安全討論

余承東再談安全:鴻蒙智行車門鎖四重設(shè)計,小米SU7引安全討論

科技Nice
2025-10-14 12:58:30
A股:高開回落!內(nèi)資拋壓引發(fā)普跌,三大指數(shù)分化,下午還要跌?

A股:高開回落!內(nèi)資拋壓引發(fā)普跌,三大指數(shù)分化,下午還要跌?

虎哥閑聊
2025-10-14 12:10:24
汪峰前任葛薈婕首曝 不帶走女兒原因:當(dāng)時才十幾歲,自己不會養(yǎng)

汪峰前任葛薈婕首曝 不帶走女兒原因:當(dāng)時才十幾歲,自己不會養(yǎng)

小蘭聊歷史
2025-10-14 13:29:27
30歲小伙確診漸凍癥兩年去世:妻子曾“賣房救夫”稱不后悔,其父多年前患此病去世

30歲小伙確診漸凍癥兩年去世:妻子曾“賣房救夫”稱不后悔,其父多年前患此病去世

紅星新聞
2025-10-14 12:58:27
42+36+37+33+31!4人打吐了!加時3分絕殺!又菜又愛打!

42+36+37+33+31!4人打吐了!加時3分絕殺!又菜又愛打!

貴圈真亂
2025-10-14 13:26:11
辛瓦爾遺孀被曝秘密逃離加沙,并在土耳其再婚,丈夫剛?cè)ナ谰艂€月

辛瓦爾遺孀被曝秘密逃離加沙,并在土耳其再婚,丈夫剛?cè)ナ谰艂€月

西方尋史
2025-09-29 15:54:49
冷空氣來了!內(nèi)蒙古將有大到暴雪!

冷空氣來了!內(nèi)蒙古將有大到暴雪!

魯中晨報
2025-10-14 10:40:03
最后通牒!大批中成藥將出局

最后通牒!大批中成藥將出局

賽柏藍
2025-10-11 20:04:52
1955年大授銜,到底誰軍銜授低了?雖然眾說紛紜,這五位是真低了

1955年大授銜,到底誰軍銜授低了?雖然眾說紛紜,這五位是真低了

思雨憶史錄
2025-10-14 09:40:33
演員張藝洋已執(zhí)行死刑!中國娛樂圈首例,倪大紅、李雪健被牽連

演員張藝洋已執(zhí)行死刑!中國娛樂圈首例,倪大紅、李雪健被牽連

阿纂看事
2025-07-25 17:12:19
小米起火又上熱搜,我不敢再幫這家企業(yè)說一句話了

小米起火又上熱搜,我不敢再幫這家企業(yè)說一句話了

麥杰遜
2025-10-13 20:54:42
巴鐵火力全開,連炸十多個基地,阿富汗傷亡慘重:不會將基地交出

巴鐵火力全開,連炸十多個基地,阿富汗傷亡慘重:不會將基地交出

歷史有些冷
2025-10-13 13:45:04
幼崽的胡說八道有多大威力?網(wǎng)友:小朋友的想象力是真的天馬行空

幼崽的胡說八道有多大威力?網(wǎng)友:小朋友的想象力是真的天馬行空

帶你感受人間冷暖
2025-10-04 00:05:07
今年六王表演賽獎金高得離譜:輕松秒殺大滿貫和大師賽

今年六王表演賽獎金高得離譜:輕松秒殺大滿貫和大師賽

網(wǎng)球之家
2025-10-14 12:45:01
阿富汗A-29攻擊機突防紅旗9攔截,巴鐵梟龍炸山頂,雷石6一發(fā)入魂

阿富汗A-29攻擊機突防紅旗9攔截,巴鐵梟龍炸山頂,雷石6一發(fā)入魂

墨蘭史書
2025-10-13 13:25:07
幾乎零差評!世界公認的6本頂級經(jīng)典名著,簡直炸裂!

幾乎零差評!世界公認的6本頂級經(jīng)典名著,簡直炸裂!

尚曦讀史
2025-10-13 07:37:03
很少有人知道,吳石犧牲后僅僅8天,另一個重磅人物陳儀倒下了

很少有人知道,吳石犧牲后僅僅8天,另一個重磅人物陳儀倒下了

大國紀錄
2025-10-14 11:43:01
上海第五大學(xué)花落誰家?華理、上財、上大、上科大等群雄逐鹿

上海第五大學(xué)花落誰家?華理、上財、上大、上科大等群雄逐鹿

牛鍋巴小釩
2025-10-14 12:23:05
澤連斯基被曝兩面手法:對外訴困求援,暗中向沙特銀行巨額匯款

澤連斯基被曝兩面手法:對外訴困求援,暗中向沙特銀行巨額匯款

蘭妮搞笑分享
2025-10-14 14:09:51
2025-10-14 15:20:49
程序員古耕 incentive-icons
程序員古耕
程序員、網(wǎng)文作家、自媒體人
571文章數(shù) 381關(guān)注度
往期回顧 全部

科技要聞

郭彥東:2025年具身智能要走向真實應(yīng)用

頭條要聞

諾貝爾經(jīng)濟學(xué)獎獲得者放話:歐洲不能讓中美贏了

頭條要聞

諾貝爾經(jīng)濟學(xué)獎獲得者放話:歐洲不能讓中美贏了

體育要聞

只有53萬人的小國,今天打進世界杯了!

娛樂要聞

嫌棄劉嘉玲拒絕林青霞,他的瓜很難評

財經(jīng)要聞

艾為電氣創(chuàng)業(yè)板IPO:大客戶依賴存風(fēng)險

汽車要聞

標(biāo)配寧王電池不變 極狐阿爾法T5增程版入列

態(tài)度原創(chuàng)

本地
健康
游戲
數(shù)碼
公開課

本地新聞

云游中國|闖進霸州煙火晨景!練劍唱戲超有范兒

內(nèi)分泌科專家破解身高八大謠言

《羊蹄山之魂》動捕幕后照公開!內(nèi)部稱呼揭秘!

數(shù)碼要聞

一臺帶來全新認知的高性能輕薄本:戴爾16 Premium 深度體驗

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關(guān)懷版 久久国产精品二国产精品| 色欲AⅤ无码精品一区二区三区| 四虎无码在线| AV天堂资源成人| avav天堂网| 日韩a无v码在线播放| 美女色播久久| 久久精品国产2020| 丰满人妻性色高清无码生活片| 亚洲人成网站在线观看播放| 欧美日韩成年人大黄片| av无码一区二区三区| 麻花豆传媒剧国产MV在线下| 色欲av一区二区三| 欧美三级乱人伦电影| 国产毛片一区二区精品久久久| 亚洲人成人网站在线观看 | 国产六月婷婷爱在线观看| 国产专区一线二线三线品牌东| 熟妇人妻av中文字幕老熟妇| AV天堂少妇| 欧美天天性爱网爆| 色婷婷久久综合中文久久蜜桃av| 男人天堂网2017| 欧美日产国产精选| 国产精品高清一区二区三区| 日韩a级毛片| 激情小说 激情图片| 四川话毛片少妇免费看| 无码人妻丰满熟妇XXXXX| 人人妻人人操人人夹| 蜜臀色欲久久久999洲精品| 我被老外躁到了高潮八次| 无码电影网站| 色色色色色区| 欧美成人国产精品高潮| avAPP大全| 欧美成人精品福利视频| 亚洲AV成人无码电影| 国产AV无码专区亚洲AV极速版| 每天更新的免费av片在线观看|