標籤:style blog http ar 使用 sp strong 檔案 資料
又進入到了新的一周,現在到總結的時間了,繼續為大家總結一下今天在雲和學院所學的知識。
理論:
StringBuilder 和 String 的區別 String 在進行運算時(如賦值、拼接等)會產生一個新的執行個體,而 StringBuilder 則不會。所以在大量字串拼接或頻繁對某一字串進行操作時最好使用 StringBuilder,不要使用 String; 如果要操作一個不斷增長的字串,盡量不用String類,改用StringBuilder類。兩個類的工作原理不同:String類是一種傳統的修改字串的方式,它確實可以完成把一個字串添加到另一個字串上的工作沒錯,但是在.NET架構下,這個操作實在是划不來。因為系統先是把兩個字串寫入記憶體,接著刪除原來的String對象,然後建立一個String對象,並讀取記憶體中的資料賦給該對象。這一來二去的,耗了不少時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,能夠在已有對象的原地進行字串的修改,簡單而且直接。當然,一般情況下覺察不到這二者效率的差異,但如果你要對某個字串進行大量的添加操作,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
對象的引用int、decimal、bool、double byte 枚舉結構等類型(實值型別)是傳遞拷貝;對象(參考型別)則是傳遞引用。方法間傳遞對象 String 參考型別 數組 類
結構如果寫建構函式 那麼就要把結構中所有的欄位全部賦值
如果在結構中寫了建構函式,那麼 預設的建構函式還有,和類不同
在類中寫了有參數的建構函式 ,無參數的建構函式直接被幹掉了
並且 在類中的建構函式中 可以 不用把所有欄位都賦值
實值型別和參考型別的區別1.將一個實值型別變數賦給另一個實值型別變數時,將複製包含的值。參考型別變數的賦值只複製對對象的引用,而不複製對象本身。2.實值型別不可能派生出新的類型:所有的實值型別均隱式派生自 System.ValueType。但與參考型別相同的是,結構也可以實現介面。3.實值型別不可能包含 null 值:4.每種實值型別均有一個隱式的預設建構函式來初始化該類型的預設值。
堆和棧的區別
棧是編譯期間就分配好的記憶體空間,因此你的代碼中必須就棧的大小有明確的定義;局部實值型別變數、實值型別參數等都在棧記憶體中。堆是程式運行期間動態分配的記憶體空間,你可以根據程式的運行情況確定要分配的堆記憶體的大小。
實操
StringBuilder的運用
接收使用者輸入的字串,將其中的字元以與輸入相反的順序輸出。"abc"→"cba"
接收使用者輸入的一句英文,將其中的單詞以反序輸出。"hello c sharp"→"sharp c hello"
從Email中提取出使用者名稱和網域名稱
文字檔中儲存了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,每行一個,標題有的長有的短,輸出到控制台的時候最多標題長度10,如果超過10, 則截取長度8的子串並且最後添加“...”,加一個豎線後輸出作者的名字。
分別寫一個Teacher類和一個Student的類(繼承的運用)
首先定義一個父類Person
在分別定義Teacher類和Student類
在Main函數裡調用方法
好了,今天就先寫到這裡了,明天再繼續吧...加油!
C#中字串的處理,對象的引用及繼承(Tenth day)