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

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

 更新時(shí)間:2013年07月23日 10:13:57   作者:  
在string方法中,如ToUpper等字符串操作方法,都會(huì)產(chǎn)生一個(gè)新的字符串,這樣增大了運(yùn)行開支。一個(gè)替代方案是通過(guò)非托管代碼直接操作字符串。如替代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語(yǔ)句:
格式 fixed ( type* ptr = expr ) statement
它的目的是防止變量被垃圾回收器生定位。
其中:
type為非托管類型或void
ptr為指針名
expr為可以隱式轉(zhuǎn)換為type*的表達(dá)式
statement為可執(zhí)行的語(yǔ)句或塊
  fixed語(yǔ)句只能在unsafe的上下文中使用,fixed 語(yǔ)句設(shè)置指向托管變量的指針并在 statement 執(zhí)行期間“鎖定”該變量。如果沒有 fixed 語(yǔ)句,則指向托管變量的指針將作用很小,因?yàn)槔厥湛赡懿豢深A(yù)知地重定位變量。
  執(zhí)行完 statement 后,任何鎖定的變量都被取消鎖定并受垃圾回收的制約。因此,不要指向 fixed 語(yǔ)句之外的那些變量。在不安全模式中,可以在堆棧上分配內(nèi)存。堆棧不受垃圾回收的制約,因此不需要被鎖定。

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

相關(guān)文章

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

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

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

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

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

    最好用的WPF加載動(dòng)畫功能

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

华安县| 平昌县| 电白县| 平乐县| 巴塘县| 临漳县| 宁安市| 绿春县| 军事| 合作市| 辽阳县| 紫阳县| 界首市| 县级市| 宁晋县| 额敏县| 丹凤县| 莎车县| 通化县| 阳曲县| 东乌珠穆沁旗| 宜章县| 定日县| 陆丰市| 疏勒县| 师宗县| 聂荣县| 广丰县| 濮阳市| 望谟县| 盈江县| 于田县| 时尚| 景宁| 鄂温| 彰化县| 潮州市| 清苑县| 峨山| 南召县| 同德县|