型別轉換
所謂型別轉換,就是把值從乙個型別轉換為另乙個型別,比如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...