您好,登錄后才能下訂單哦!
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _5.數據類型轉換 { class Program { static void Main(string[] args) { // 隱式類型轉換 { ushort destinationVar; char sourceVar = 'a'; // 下面這條語句把char類型隱式轉換成ushort類型。 destinationVar = sourceVar; Console.WriteLine("sourceVar val: {0}", sourceVar); Console.WriteLine("destinationVar val: {0}", destinationVar); } // 顯式類型轉換 { byte destinationVar; short sourceVar = 7; // 下面這條語句把short類型顯式轉換成byte類型。 // 如果不強制類型轉換,會出現編譯錯誤。 destinationVar = (byte)sourceVar; Console.WriteLine("sourceVar val: {0}", sourceVar); Console.WriteLine("destinationVar val: {0}", destinationVar); } // 表達式的溢出檢查上下文 { byte destinationVar; short sourceVar = 281; // byte類型的最大值255,所以此語句進行強制類型轉換后會溢出。其結果為25 destinationVar = (byte)sourceVar; // destinationVar = checked((byte)sourceVar); // 上面這條語句進行溢出檢查時,會出現OverflowException異常。 // destinationVar = unchecked((byte)sourceVar); // 上面這條語句表示不進行溢出檢查和不加此溢出檢,查結果是一樣的。 Console.WriteLine("sourceVar val: {0}", sourceVar); Console.WriteLine("destinationVar val: {0}", destinationVar); } // 使用Convert類方法進行轉換 { bool boolVal = true; double doubleVar = 99.999; string stringResult; string stringVal = "17"; int integerVal = 67; long longResult; stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVar); Console.WriteLine("stringResult: {0}", stringResult); longResult = integerVal + Convert.ToInt64(stringVal); Console.WriteLine("longResult: {0}", longResult); } Console.ReadKey(); } } } /** * 一、數據類型轉換 * 1. 基本概念 * a) 不同類型的變量使用不同的模式來表示數據。 * b) 它們占用的存儲空間可能相同,也許目標類型有足夠的存儲空間包含所有的源數據位,結果也有可能與期望不同。 * * 2. 數據類型轉換分類 * 可分為隱式類型轉換和顯式類型轉換。 * * 二、隱式類型轉換 * 1. 基本概念 * 從類型A到類型B的轉換可以在所有情況下進行,執行轉換規則非常簡單,可以讓編譯器執行轉換。 * * 2. 隱式轉換規則 * 任何類型A,只要其取值范圍完全包含在類型B的取值范圍內,就可以進行隱式轉換為類型B。 * * 3. 基本類型隱式轉換表 * 類型 可以安全轉換為 * byte short,ushort,int,uint,long,ulong,float,double,decimal * sbyte short,int,long,float,double,decimal * short int,long,float,double,decimal * ushort int,uint,long,ulong,float,double,decimal * int long,float,double,decimal * uint long,ulong,float,double,decimal * long float,double,decimal * ulong float,double,decimal * float double * char ushort,int,uint,long,ulong,float,double,decimal * * bool和string類型沒有隱式轉換。 * * 三、顯式類型轉換 * 1. 基本概念 * 從類型A到類型B的轉換只能在某些情況下進行,轉換規則比較復雜,應進行某種類型的處理。 * * 2. 轉換規則 * 強迫數據從一種類型轉換為另一種類型。 * 其語法為: * <(destinationType)sourceVar>; * 此種轉換只能在某種情況下才是可行的。彼此之間沒有關系的類型或根本沒有關系的類型不能進行強制轉換。 * * 四、表達式的溢出檢查上下文 * 1. 簡單檢查源變量的值,把它與目標變量的取值范圍進行比較。 * 2. 迫使系統特別注意運行期間的轉換。 * 使用checked和unchecked關鍵字進行表達式的溢出檢查上下文。 * 其使用語法: * checked(expression) <檢查表達式是否溢出,如出現溢出情況會拋出OverflowException異常> * unchecked(expression) <對表達式溢出情況不進行檢查> * * 五、使用Convert類進行顯式轉換 * 1. 數值的有效表達方式 * 首先是一個可選符號(加號或減號),然后是0位或多位數字,一個句點后跟一位或多位數字,接著是一個可選的e或E, * 后跟一個可選符號和一位或多位數字(在這個序列之前或之后)和空格。 * * 2. 轉換方法 * // 整數類型 * Convert.ToByte(val) val轉換為byte * Convert.ToSByte(val) val轉換為sbyte * Convert.ToInt16(val) val轉換為short * Convert.ToUInt16(val) val轉換為ushort * Convert.ToInt32(val) val轉換為int * Convert.ToUInt32(val) val轉換為uint * Convert.ToInt64(val) val轉換為long * Convert.ToUInt64(val) val轉換為ulong * * // 浮點類型 * Convert.ToSingle(val) val轉換為float * Convert.ToDouble(val) val轉換為double * Convert.ToDecimal(val) val轉換為decimal * * // 布爾類型 * Convert.ToBoolean(val) val轉換為bool * * // 字符類型 * Convert.ToChar(val) val轉換為char * * // 字符串類型 * Convert.ToString(val) val轉換為string * * 使用以上類型轉換方式總是會進行溢出檢查,checked和unchecked關鍵字不起作用。 */
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。