C#中引用型別之特例string的詳細介紹
在C#程式設計的時候常常會使用字串(string)類型,它也是引用類型,但是處處都不作為引用的用法來使用,實屬特例,下來我一一羅列出來,供自己記憶方便:
1)字串的直接賦值:本身字串就是引用型,應該使用 new 物件方法一個實例,但是微軟為了方便大家,可以直接定義字串變數並且賦值操作,例如: string a = "我的中國心"; ,這樣只是簡化我們的操作;
2)一個字符串賦值給另一個字符串變量:正常的引用類型會將兩個引用變數指向同一個位址,但是當一個字串變數賦值給另一個字串變數時,缺時建立了兩個不同的位址空間,例如:
string a = "12345"; string b = a;
上面的程式碼是兩個個不同的位址引用,只是把a的字串內容賦值給b,a和b內容是一樣的;
3)同一個字串的多次賦值:依照一般的思維對一個字串變數賦值,只是改變其內容,不會改變其位址,但是字串比較奇葩,當給同一個字串變數再次賦值的時候,它會重新分配記憶體空間,建立一個新的位址,然後把
這個位址賦值給原來的字串變量,舉例說明:
string a= "123"; a = "456"
當第二次給a值 當第二次給a值賦值為"456"時,它是創造空間的記憶體,然後把新建的記憶體位址賦值給a變量,以前的"123"的記憶體摒棄不用,等待垃圾回收。
4)字串作為函數參數傳遞:當字串作為函數的參數傳遞時,本身就是引用類型,應該是將變數的位址引用傳遞過去,以後在函數裡對該參數的修改都會改變該字串的值,但是我告訴你,結果它只是傳遞了該字符串的副本給
函數體,在函數裡對該字符修改,居然不影響傳遞參數的值,當然,字串的傳遞也可以當引用型別使用,主要加入ref 即可,可截圖:
# 5)字串的比較:在字串作為引用時,比較兩個引用類型是否相等,只是比較兩個引用的地址是否相等(除非你重載了Equal函數),但是當我們在比較字串的時候,發現其實他們比較的是字串的內容,並非是引用的地址,
這是引用string類別重載了equal函數,是指比較字元的內容,在這點上 == 和equal的結果其實是一樣的;
6)字串的記憶體駐留:當我們在創建具有相同的字串內容的變數時,這些字串變數其實指向的同一個記憶體位址,這點有點像C++裡的內聯;
如有其它特別之處,煩請高手給予指點,如有什麼不同見解之處,請留言,大家相互學習,菜鳥才能一步步成長起來,呵呵! ! !
以上是C#中引用型別之特例string的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用Java的String.valueOf()函數將基本資料型別轉換為字串在Java開發中,當我們需要將基本資料型別轉換為字串時,常見的方法是使用String類別的valueOf()函數。這個函數可以接受基本資料類型的參數,並傳回對應的字串表示。在本文中,我們將探討如何使用String.valueOf()函數進行基本資料型別轉換,並提供一些程式碼範例來

char陣列轉string的方法:可以透過賦值來實現,使用{char a[]=" abc d\0efg ";string s=a;}語法,讓char陣列對string直接賦值,執行程式碼即可完成轉換。

使用Java的String.replace()函數替換字串中的字元(字串)在Java中,字串是不可變的對象,這意味著一旦創建了一個字串對象,就無法修改它的值。但是,你可能會遇到需要替換字串中的某些字元或字串的情況。這時候,我們可以使用Java的String類別中的replace()方法來實作字串的替換。 String類別的replace()方法有兩種重

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

大家好,今天跟大家分享java基礎之String。 String類別的重要性就不必說了,可以說是我們後端開發用的最多的類,所以,很有必要好好聊聊它。

使用Java的String.length()函數取得字串的長度在Java程式設計中,字串是一種非常常見的資料類型,我們經常需要取得字串的長度,即字串中字元的個數。在Java中,我們可以使用String類別的length()函數來取得字串的長度。下面是一個簡單的範例程式碼:publicclassStringLengthExample{publ

在Golang程式設計中,byte、rune和string類型是非常基礎、常見的資料型別。它們在處理字串、檔案流等資料操作時發揮著重要作用。而在進行這些資料操作時,我們通常需要對它們進行相互的轉換,這就需要掌握一些轉換技巧。本文將介紹Golang函數的byte、rune和string類型轉換技巧,旨在幫助讀者更好地理解這些資料類型,並能夠熟練地在程式設計實踐中應用
