首頁 後端開發 C#.Net教程 C#中引用型別之特例string的詳細介紹

C#中引用型別之特例string的詳細介紹

Sep 18, 2017 am 11:02 AM
.net 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

使用java的String.valueOf()函數將基本資料型別轉換為字串 使用java的String.valueOf()函數將基本資料型別轉換為字串 Jul 24, 2023 pm 07:55 PM

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

怎麼把char數組轉string 怎麼把char數組轉string Jun 09, 2023 am 10:04 AM

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

使用java的String.replace()函數替換字串中的字元(字串) 使用java的String.replace()函數替換字串中的字元(字串) Jul 25, 2023 pm 05:16 PM

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

C#的就業前景如何 C#的就業前景如何 Oct 19, 2023 am 11:02 AM

無論您是初學者還是有經驗的專業人士,掌握C#將為您的職業發展鋪平道路。

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

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

2w字 詳解 String,yyds 2w字 詳解 String,yyds Aug 24, 2023 pm 03:56 PM

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

使用java的String.length()函數取得字串的長度 使用java的String.length()函數取得字串的長度 Jul 25, 2023 am 09:09 AM

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

Golang函數的byte、rune和string型轉換技巧 Golang函數的byte、rune和string型轉換技巧 May 17, 2023 am 08:21 AM

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

See all articles