.NET小细节
1、equals()和運算符==的區別
? ? C#中有兩種不同的相等:引用相等和值相等。值相等是兩個對象包含相同的值;引用相等是兩個對象引用的是同一個對象。
? ? “==”操作符比較的是兩個變量的值是否相等,或兩個引用是不是指向同一個內存地址(類似比較文件夾的路徑是否相同);
? ? ?equals()方法比較的是兩個對象指向的內存空間中的內容是不是相同。
? ? ?對于string類型,==比較字符串的值。
? ? ?因為值類型是存儲在內存中的棧中,而引用類型的變量在棧中僅僅是存儲引用類型變量的地址,其本身則存儲在椎中。
? ? ?==操作符比較的是兩個變量的值是否相等,對于引用類型變量表示的是兩個變量在棧中存儲的地址是否相同,即棧中的內容是否相同。
? ? ?equals()表示的是兩個變量是否是對同一個對象的引用,即堆中的內容是否相同。
2、const和readonly的區別
- ?readonly修飾符用來表示只讀,const用來表示不變常量。
- readonly和const都是用來標識常量的
- 初始化賦值不同:const必須在聲明的同時賦值,readonly可以在聲明或構造函數中賦值
- const是編譯時常數,readonly可用于運行時常數:const不能從一個變量中提取值來初始化,readonly可以用變量來初始化
- const默認就是靜態的,readonly必須顯示聲明為靜態的(static)
- const修飾的值的類型有限,readonly可以是任何類型
? ?
?
轉載于:https://www.cnblogs.com/tkaren/p/5391901.html
總結
- 上一篇: 使用JavaScript进行数组去重——
- 下一篇: 设计模式(十一):从文Finder中认识