溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

五、數(shù)據(jù)類型轉(zhuǎn)換

發(fā)布時(shí)間:2020-04-03 14:20:02 來(lái)源:網(wǎng)絡(luò) 閱讀:168 作者:vik_xiao 欄目:編程語(yǔ)言
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _5.數(shù)據(jù)類型轉(zhuǎn)換
{
    class Program
    {
        static void Main(string[] args)
        {
            // 隱式類型轉(zhuǎn)換
            {
                ushort destinationVar;
                char sourceVar = 'a';
                
                // 下面這條語(yǔ)句把char類型隱式轉(zhuǎn)換成ushort類型。
                destinationVar = sourceVar;
                Console.WriteLine("sourceVar val: {0}", sourceVar);
                Console.WriteLine("destinationVar val: {0}", destinationVar);
            }
            
            // 顯式類型轉(zhuǎn)換
            {
                byte destinationVar;
                short sourceVar = 7;
                
                // 下面這條語(yǔ)句把short類型顯式轉(zhuǎn)換成byte類型。
                // 如果不強(qiáng)制類型轉(zhuǎn)換,會(huì)出現(xiàn)編譯錯(cuò)誤。
                destinationVar = (byte)sourceVar;
                Console.WriteLine("sourceVar val: {0}", sourceVar);
                Console.WriteLine("destinationVar val: {0}", destinationVar);
            }
            
            // 表達(dá)式的溢出檢查上下文
            {
                byte destinationVar;
                short sourceVar = 281;
                
                // byte類型的最大值255,所以此語(yǔ)句進(jìn)行強(qiáng)制類型轉(zhuǎn)換后會(huì)溢出。其結(jié)果為25
                destinationVar = (byte)sourceVar;
                // destinationVar = checked((byte)sourceVar); 
                // 上面這條語(yǔ)句進(jìn)行溢出檢查時(shí),會(huì)出現(xiàn)OverflowException異常。
                // destinationVar = unchecked((byte)sourceVar); 
                // 上面這條語(yǔ)句表示不進(jìn)行溢出檢查和不加此溢出檢,查結(jié)果是一樣的。
                Console.WriteLine("sourceVar val: {0}", sourceVar);
                Console.WriteLine("destinationVar val: {0}", destinationVar);
            }
            
            // 使用Convert類方法進(jìn)行轉(zhuǎn)換
            {
                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();
        }
    }
}

/**
 * 一、數(shù)據(jù)類型轉(zhuǎn)換
 * 1. 基本概念
 * a) 不同類型的變量使用不同的模式來(lái)表示數(shù)據(jù)。
 * b) 它們占用的存儲(chǔ)空間可能相同,也許目標(biāo)類型有足夠的存儲(chǔ)空間包含所有的源數(shù)據(jù)位,結(jié)果也有可能與期望不同。
 * 
 * 2. 數(shù)據(jù)類型轉(zhuǎn)換分類
 * 可分為隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換。
 * 
 * 二、隱式類型轉(zhuǎn)換
 * 1. 基本概念
 * 從類型A到類型B的轉(zhuǎn)換可以在所有情況下進(jìn)行,執(zhí)行轉(zhuǎn)換規(guī)則非常簡(jiǎn)單,可以讓編譯器執(zhí)行轉(zhuǎn)換。
 * 
 * 2. 隱式轉(zhuǎn)換規(guī)則
 * 任何類型A,只要其取值范圍完全包含在類型B的取值范圍內(nèi),就可以進(jìn)行隱式轉(zhuǎn)換為類型B。
 * 
 * 3. 基本類型隱式轉(zhuǎn)換表
 * 類型   可以安全轉(zhuǎn)換為
 * 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類型沒(méi)有隱式轉(zhuǎn)換。
 * 
 * 三、顯式類型轉(zhuǎn)換
 * 1. 基本概念
 * 從類型A到類型B的轉(zhuǎn)換只能在某些情況下進(jìn)行,轉(zhuǎn)換規(guī)則比較復(fù)雜,應(yīng)進(jìn)行某種類型的處理。
 * 
 * 2. 轉(zhuǎn)換規(guī)則
 * 強(qiáng)迫數(shù)據(jù)從一種類型轉(zhuǎn)換為另一種類型。
 * 其語(yǔ)法為:
 *  <(destinationType)sourceVar>;
 *  此種轉(zhuǎn)換只能在某種情況下才是可行的。彼此之間沒(méi)有關(guān)系的類型或根本沒(méi)有關(guān)系的類型不能進(jìn)行強(qiáng)制轉(zhuǎn)換。
 *  
 * 四、表達(dá)式的溢出檢查上下文
 * 1. 簡(jiǎn)單檢查源變量的值,把它與目標(biāo)變量的取值范圍進(jìn)行比較。
 * 2. 迫使系統(tǒng)特別注意運(yùn)行期間的轉(zhuǎn)換。
 *  使用checked和unchecked關(guān)鍵字進(jìn)行表達(dá)式的溢出檢查上下文。
 *  其使用語(yǔ)法:
 *      checked(expression)     <檢查表達(dá)式是否溢出,如出現(xiàn)溢出情況會(huì)拋出OverflowException異常>
 *      unchecked(expression)   <對(duì)表達(dá)式溢出情況不進(jìn)行檢查>
 *      
 * 五、使用Convert類進(jìn)行顯式轉(zhuǎn)換
 * 1. 數(shù)值的有效表達(dá)方式
 * 首先是一個(gè)可選符號(hào)(加號(hào)或減號(hào)),然后是0位或多位數(shù)字,一個(gè)句點(diǎn)后跟一位或多位數(shù)字,接著是一個(gè)可選的e或E,
 * 后跟一個(gè)可選符號(hào)和一位或多位數(shù)字(在這個(gè)序列之前或之后)和空格。
 * 
 * 2. 轉(zhuǎn)換方法
 * // 整數(shù)類型
 * Convert.ToByte(val)      val轉(zhuǎn)換為byte
 * Convert.ToSByte(val)     val轉(zhuǎn)換為sbyte
 * Convert.ToInt16(val)     val轉(zhuǎn)換為short
 * Convert.ToUInt16(val)    val轉(zhuǎn)換為ushort
 * Convert.ToInt32(val)     val轉(zhuǎn)換為int
 * Convert.ToUInt32(val)    val轉(zhuǎn)換為uint
 * Convert.ToInt64(val)     val轉(zhuǎn)換為long
 * Convert.ToUInt64(val)    val轉(zhuǎn)換為ulong
 * 
 * // 浮點(diǎn)類型
 * Convert.ToSingle(val)    val轉(zhuǎn)換為float
 * Convert.ToDouble(val)    val轉(zhuǎn)換為double
 * Convert.ToDecimal(val)   val轉(zhuǎn)換為decimal
 * 
 * // 布爾類型
 * Convert.ToBoolean(val)   val轉(zhuǎn)換為bool
 * 
 * // 字符類型
 * Convert.ToChar(val)      val轉(zhuǎn)換為char
 * 
 * // 字符串類型
 * Convert.ToString(val)    val轉(zhuǎn)換為string
 * 
 * 使用以上類型轉(zhuǎn)換方式總是會(huì)進(jìn)行溢出檢查,checked和unchecked關(guān)鍵字不起作用。
 */


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI