最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用非托管代碼直接修改字符串的方法

 更新時間:2013年07月23日 10:13:57   作者:  
在string方法中,如ToUpper等字符串操作方法,都會產(chǎn)生一個新的字符串,這樣增大了運(yùn)行開支。一個替代方案是通過非托管代碼直接操作字符串。如替代ToUpper方法:

復(fù)制代碼 代碼如下:

using System;
public class Test
{
 public static void Main(string[] args)
 {
  string str = "hello";
  ToUpper(str);
  Console.WriteLine(str);
 }
 private static unsafe void ToUpper(string str)
 {
  fixed(char * pfixed = str)
  for(char * p=pfixed;*p!=0;p++)
  {
   *p = char.ToUpper(*p);
  }
 }
}

fixed語句:
格式 fixed ( type* ptr = expr ) statement
它的目的是防止變量被垃圾回收器生定位。
其中:
type為非托管類型或void
ptr為指針名
expr為可以隱式轉(zhuǎn)換為type*的表達(dá)式
statement為可執(zhí)行的語句或塊
  fixed語句只能在unsafe的上下文中使用,fixed 語句設(shè)置指向托管變量的指針并在 statement 執(zhí)行期間“鎖定”該變量。如果沒有 fixed 語句,則指向托管變量的指針將作用很小,因?yàn)槔厥湛赡懿豢深A(yù)知地重定位變量。
  執(zhí)行完 statement 后,任何鎖定的變量都被取消鎖定并受垃圾回收的制約。因此,不要指向 fixed 語句之外的那些變量。在不安全模式中,可以在堆棧上分配內(nèi)存。堆棧不受垃圾回收的制約,因此不需要被鎖定。

但在編譯時,因?yàn)槭褂昧朔峭泄艽a,必須要使用/unsafe才能通過。

相關(guān)文章

  • c#判斷email地址是否為合法

    c#判斷email地址是否為合法

    輸入email地址使用c#語言檢測出email地址是否是合法的,這篇文章主要介紹了c#判斷email地址是否為合法的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • C#異步編程由淺入深(二)之Async/Await的使用

    C#異步編程由淺入深(二)之Async/Await的使用

    這篇文章主要介紹了C#異步編程由淺入深(二)之Async/Await的作用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 最好用的WPF加載動畫功能

    最好用的WPF加載動畫功能

    當(dāng)開發(fā)應(yīng)用程序時,提供良好的用戶體驗(yàn)(UX)是至關(guān)重要的,加載動畫作為一種有效的溝通工具,它不僅能告知用戶系統(tǒng)正在工作,還能夠通過視覺上的吸引力來增強(qiáng)整體用戶體驗(yàn),本文給大家介紹了最好用的WPF加載動畫功能,需要的朋友可以參考下
    2025-01-01
  • C#數(shù)據(jù)表格(DataGridView)控件的應(yīng)用案例

    C#數(shù)據(jù)表格(DataGridView)控件的應(yīng)用案例

    這篇文章主要介紹了C#數(shù)據(jù)表格(DataGridView)控件的應(yīng)用案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Unity 通過LineRenderer繪制兩點(diǎn)之間的直線操作

    Unity 通過LineRenderer繪制兩點(diǎn)之間的直線操作

    這篇文章主要介紹了Unity 通過LineRenderer繪制兩點(diǎn)之間的直線操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量一

    C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量一

    本節(jié)課我們將學(xué)習(xí)C#編程語言的數(shù)據(jù)類型,數(shù)據(jù)類型可以分為值類型和引用類型,接著介紹變量的使用方法和作用域等內(nèi)容,為了方便大家理解,我們還會舉一些小例子作為說明。
    2015-10-10
  • 一文詳解C#中方法重載的底層玩法

    一文詳解C#中方法重載的底層玩法

    最近在看C++的方法重載,就在想C#中的重載底層是怎么玩的。畢竟很多朋友應(yīng)該知道C是不支持重載的。本文將來詳細(xì)講講C#中方法重載的底層玩法,感興趣的可以了解一下<BR>
    2022-06-06
  • c#可以創(chuàng)建任意控件的拖動方法

    c#可以創(chuàng)建任意控件的拖動方法

    下面小編就為大家分享一篇c#可以創(chuàng)建任意控件的拖動方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 采用C#代碼動態(tài)設(shè)置文件權(quán)限

    采用C#代碼動態(tài)設(shè)置文件權(quán)限

    在開發(fā)中,我們經(jīng)常會使用IO操作,例如創(chuàng)建,刪除文件等操作。在項(xiàng)目中這樣的需求也較多,我們也會經(jīng)常對這些操作進(jìn)行編碼,但是對文件的權(quán)限進(jìn)行設(shè)置,這樣的操作可能會手動操作,本文介紹一種采用代碼動態(tài)對文件設(shè)置權(quán)限的操作。
    2016-12-12
  • C#溫故而知新系列教程之閉包

    C#溫故而知新系列教程之閉包

    閉包是將一些執(zhí)行語句的封裝,可以將封裝的結(jié)果像對象一樣傳遞,在傳遞時,這個封裝依然能夠訪問到原上下文。下面這篇文章主要給大家介紹了關(guān)于C#中閉包的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05

最新評論

嵩明县| 印江| 汝州市| 会泽县| 石门县| 威远县| 吉水县| 景洪市| 集安市| 封丘县| 忻城县| 兴隆县| 启东市| 镇平县| 岚皋县| 弥勒县| 旬阳县| 从江县| 兴仁县| 黔西县| 那曲县| 祁东县| 洪雅县| 舞钢市| 奉贤区| 长岭县| 河东区| 吉隆县| 襄城县| 德惠市| 平利县| 天等县| 漳州市| 奇台县| 武穴市| 三都| 勐海县| 电白县| 仙游县| 潞城市| 治县。|