溫故而知新 1 C 型別轉換

2021-07-26 21:21:50 字數 1371 閱讀 2870

型別轉換

所謂型別轉換,就是把值從乙個型別轉換為另乙個型別,比如int->string,datetime->string。

以下是《c#入門經典》中對型別轉換的定義。(切忌不可按照自己的慣性思維誤導,本人在複習前一直都認為顯式是所有情況都可轉換,隱式是特定情況才可轉換,因為只顧使用而很少仔細學習閱讀基本知識。)

這裡型別轉換有2種方式:

隱式轉換:從型別a——>型別b的轉換可在所有情況下進行,執行轉換的規則非常簡單,可以讓編譯器執行轉換。

舉例:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace

blog

}}

從**中可以看到,不需要任何強制轉換,int型別隱式的轉換成了double型別。而如果反過來要讓a=b,結果如圖:

因為int可以自動上公升為double,但由double不能自動轉化為int,這裡就需要顯式轉換,即int a = (double)b才是最保險的;所以顯式轉換肯定不會出錯,但隱式轉換就說不定了。

顯式轉換:從型別a——>型別b的轉換只能在某些情況下進行,轉換規則比較複雜,應進行某種型別的額外處理。

舉例:

class

program

}

但是當我們試圖把乙個值轉換為不相容的變數時,需要注意轉換過程中資料是否會溢位。這裡我們需要在轉換時使用「溢位檢查上下文」,即checked和unchecked。

如果我們不用checked,效果如下:

static

void main(string args)

可見編譯程式時並未報錯,但是資料並不正確,我們分別看299,255,43的二進位制:

299=100101011;

255=011111111;

43 =000101001;

如圖可知,源資料的最左一位丟失導致資料轉換錯誤。

加上checked後,效果如圖:

static

void main(string args)

不過目前我做過的專案都是用的.net framework中system命名空間自帶的convert()命令進行轉換,使用這種方法總是要進行溢位檢查,checked和unchecked關鍵字以及專案屬性設定並不起作用。

溫故而知新

堆排 建立堆,維護堆的屬性 一次拿掉乙個,然後維護屬性,二分的結構 使得維護屬性只要logn的時間 冒泡也是一次拿走乙個 但是線性的結構 每次沒有節省時間 快排 一次確定 乙個值的位置,然後二分,縮小問題的範圍。floyd找最短 一次更新 將狀態改為經過固定點的 最短距離 迴圈 遍歷每個點,則結果為...

C 陣列 溫故而知新

using system using system.collections.generic using system.linq using system.text namespace 陣列 陣列初始化器只能在宣告陣列變數時使用,不能在宣告陣列之後使用 int iii new int 用花括號初始化陣...

C 溫故而知新,好吃

這一周,在業餘的時候,學習和 了c 中的知識點,一木不成林,一水難成海。1.net 是乙個開發平台,它幹著秦始皇的事,統一了程式設計類庫,提供了網路通訊標準可擴充套件標記語言的完全支援。方便你我他,大家使好它。microsoft.net 是microsoft xml web services平台。2...