c#基礎語言編程-常用函數

類型轉換Convert
Convert考慮數據意義的轉換。 Convert是一個加工、改造的過程。在使用Convert的轉換過程中不會返回異常,當遇到類型轉換的不知道的時候,用Convert找找。
Tryparse和Parse
Int.TryParse爲強制轉爲字符串,如不能轉化成功,則返回false,比如
String str= “1243sdf”;
parse中轉化不成功的話,則溢出,所以tryparse比較安全。

 //把任意的字符串轉換爲數字類型
   string msg = "12345abcd";
    //int n = int.Parse(msg);
   int n;
    bool b = int.TryParse(msg, out n);
    if (b)
     {
        Console.WriteLine(n);
     }
     else
     {
       Console.WriteLine("轉換失敗!");
     }

Convert.ToInt32()是一種類容轉換;但它不限於將字符串轉爲int類型,還可以是其它類型的參數;
比較:
    Convert.ToInt32 參數爲 null 時,返回 0;
    int.Parse 參數爲 null 時,拋出異常。

    Convert.ToInt32 參數爲 “” 時,拋出異常;
    int.Parse 參數爲 “” 時,拋出異常。

    Convert.ToInt32 可以轉換的類型較多;
ToString(),Convert.ToString()由別的對象得到 string 對象,它們間的區別只表現在要轉換的對象爲 null 時,如果 obj 爲 null,調用 obj.ToString 方法會導致 NullReferenceException 異常,調用 Convert.ToString 不會拋出異常而返回一個 null。
is 和as
這個在對基類和派生類判斷是很有好處。

//person是基類 ,Ding周人是派生於person的類
Person p = new DingZhouRen();

DingZhouRen dzr = p as DingZhouRen;
if (dzr != null)
 {
   Console.WriteLine("ok");
 }
  else
 {
    Console.WriteLine("類型轉換失敗!");
 }

equals 和==

兩者針對類/數組時時比較在棧中地址是否一樣,兩者是沒有區別的,但是在string類型時,對equals和==進行重載,是比較字符串內容是否一致。
如何判斷兩個對象是否同一個?
在object中有個判斷函數,用於判斷。

字符串常量

字符串常量和字符串對象是不一樣的概念。
比如:
string str = “adsdf”;//str是字符串常量
string str = str1;//str是字符串對象。
對於字符串常量,就是字符串暫存池。
針對字符串常量的暫存池特性,對於相同的字符串常量,每次使用的時候並不會寵幸創建一個內存來存儲,而是第一次創建的時候,講字符串作爲鍵,將字符串的地址作爲值來存儲,下次用的時候先去鍵值中查找,如果有則直接返回場次創建字符串地址。這個特性依賴於字符串的不可變性。
所以在程序中字符串常量要小,在程序退出後,纔會釋放掉內存。
由於字符串的不可變性,因爲每次創建對象時消耗時間,和內存。字符串拼接時造成內存浪費和時間消耗。
解決方法就是stringbuilder。

垃圾回收

在clr機制中提供垃圾回收功能,只回收內存中的垃圾,也就是託管堆中的內存資源,不回收其他資源。值類型不需要垃圾回收,當執行完後立即就釋放掉。
什麼樣的對象纔會被回收?
沒有變量引用的對象。即爲null的對象。
什麼時間回收?
不確定,當程序需呀重新內存的時候開始執行回收。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章