一 非同步延遲 在非同步方法中,如果需要讓程式延遲等待一會後,繼續往下執行,應使用Task.Delay()方法。 //創建一個在指定的毫秒數後完成的任務。 public static Task Delay(int millisecondsDelay); //創建一個在指定的毫秒數後完成的可取消任務。 p ...
1、 三者在執行速度方面的比較:StringBuilder >StringBuffer > String
在字元串處理中C#提供了String、StringBuffer、StringBuilder三個類。那麼他們到底有什麼優缺點,到底什麼時候該用誰呢?下麵我們從以下幾點說明一下:String一旦賦值或實例化後就不可更改,如果賦予新值將會重新開闢記憶體地址進行存儲。而StringBuffer類使用append和insert等方法改變字元串值時只是在原有對象存儲的記憶體地址上進行連續操作,減少了資源的開銷。因此:當需要進行頻繁修改字元串的操作時先建立StringBuffer類對象進行操作,將最後結果轉化成String類對象返回,這樣效率會高很多。
StringBuffer(StringBuilder)其實可以看做“基本數據類型”String的包裝類(Wrapper),就像int與之對應的Integer等關係。StringBuffer有緩存的,如果你聲明一個字元串只是接收傳過來的參數,然後進行業務邏輯處理,那麼假如你用很多個StringBuffer類型的對象,就比較浪費記憶體。這樣用String就更好。2、 在字元串拼接時,String 對象的速度並不會比 StringBuffer對象慢。String 對象的字元串拼接其實是被 JVM 解釋成了StringBuffer 對象的拼接,所以這些時候String 對象的速度並不會比StringBuffer 對象慢,而特別是以下的字元串對象生成中, String 效率是遠要比 StringBuffer 快。
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“test”);
你會很驚訝的發現,生成String S1 對象的速度簡直太快了,而這個時候 StringBuffer 居然速度上根本一點都不占優勢。其實這是 JVM 的一個把戲,在 JVM 眼裡,這個
String S1 = “This is only a” + “ simple” + “test”;其實就是:
String S1 = “This is only a simple test”;所以當然不需要太多的時間了。但大家這裡要註意的是,如果你的字元串是來自另外的 String 對象的話,速度就沒那麼快了,譬如:
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
這時候 JVM 會規規矩矩的按照原來的方式去做3、線上程安全方面不同
StringBuffer 字元串變數(線程安全)
StringBuilder 字元串變數(非線程安全)
原文連接:https://zhidao.baidu.com/question/492689576.html