a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > C# > 正文

C#用戶定義類型轉(zhuǎn)換詳解

2020-01-24 02:53:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#用戶定義類型轉(zhuǎn)換

•用于自定義類和結(jié)構(gòu)能夠進(jìn)行隱式轉(zhuǎn)換和顯示轉(zhuǎn)換.例如:將一個(gè)自定義類類型轉(zhuǎn)換成整型,浮點(diǎn)型等,反之亦然.

C#提供隱式轉(zhuǎn)換和顯式轉(zhuǎn)換

•隱式轉(zhuǎn)換:編譯器自動(dòng)執(zhí)行轉(zhuǎn)換
•顯式轉(zhuǎn)換:編譯器只在使用顯式轉(zhuǎn)換運(yùn)算符時(shí)才執(zhí)行轉(zhuǎn)換
聲明隱式轉(zhuǎn)換的語(yǔ)法如下.注:所有用戶定義轉(zhuǎn)換必須使用public和static修飾符

復(fù)制代碼 代碼如下:

public static implicit operator TargetType(SourceType Identifier)
{
       ...
      return ObjectOfTargetType;
}

TargetType:目標(biāo)類型

參數(shù)Identitfier:源數(shù)據(jù)

例如,下面代碼使一個(gè)int字面量被隱式轉(zhuǎn)換為L(zhǎng)imitedInt對(duì)象,反過(guò)來(lái)LimitedInt也可以隱式轉(zhuǎn)換成一個(gè)int

復(fù)制代碼 代碼如下:

class LimitedInt
    {
        const int MaxValue = 100;
        const int MinValue = 0;

        private int _theValue = 0;
        //屬性
        public int TheValue
        {
            get { return _theValue; }
            set
            {
                if (value < MinValue)
                {
                    _theValue = 0;
                }
                else
                {
                    _theValue = value > MaxValue ? MaxValue : value;
                }
            }
        }

        //隱式轉(zhuǎn)換:將LimitedInt對(duì)象轉(zhuǎn)為整型
        public static implicit operator int(LimitedInt li)
        {
            return li.TheValue;
        }

        //隱式轉(zhuǎn)換:將整型轉(zhuǎn)換為L(zhǎng)imitedInt對(duì)象
        public static implicit operator LimitedInt(int x)
        {
            LimitedInt li = new LimitedInt();
            li.TheValue = x;
            return li;
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            LimitedInt li = 500; //將500轉(zhuǎn)換為L(zhǎng)imitedInt

            int value = li;  //將LimitedInt轉(zhuǎn)換為int

            Console.WriteLine("li:{0},value:{1}", li.TheValue, value);

            Console.ReadKey();
        }


改代碼輸出結(jié)果:li:100,value:100

顯示轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換運(yùn)算符

前面所講的都是隱式轉(zhuǎn)換,如果你把運(yùn)算符implcit改為explicit,你將不得不在實(shí)行轉(zhuǎn)換時(shí)顯示使用轉(zhuǎn)換運(yùn)算符

代碼片段如下:

復(fù)制代碼 代碼如下:

//顯示轉(zhuǎn)換:將LimitedInt對(duì)象轉(zhuǎn)為整型
        public static explicit operator int(LimitedInt li)
        {
            return li.TheValue;
        }

        //顯示轉(zhuǎn)換:將整型轉(zhuǎn)換為L(zhǎng)imitedInt對(duì)象
        public static explicit operator LimitedInt(int x)
        {
            LimitedInt li = new LimitedInt();
            li.TheValue = x;
            return li;
        }

        static void Main(string[] args)
        {
            LimitedInt li = (LimitedInt)500; //將500強(qiáng)制轉(zhuǎn)換為L(zhǎng)imitedInt

            int value = (int)li;  //將LimitedInt強(qiáng)制轉(zhuǎn)換為int

            Console.WriteLine("li:{0},value:{1}", li.TheValue, value);

            Console.ReadKey();
        }

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91免费在线| 一区二区三区不卡视频 | www日本com | 色婷婷综合久久久中文字幕 | 81精品国产乱码久久久久久 | 亚洲欧美久久 | 国产精品久久一区 | 久久中文网 | 欧美日韩一二区 | 久久午夜影院 | 中文字幕精品三级久久久 | 欧美日韩视频网站 | 国产精品久久嫩一区二区免费 | 久久久久久久久久久一区二区 | 欧美精品一区二区三区免费视频 | 日韩有码电影 | 国产高清在线精品一区二区三区 | 精品视频在线免费 | 久久久久9999亚洲精品 | 日本激情视频 | 欧美三级视频 | 欧美一区二区三区黄色 | 动漫精品一区二区三区 | 日本不卡高清视频 | 国产精品理论片在线观看 | av在线免费观看网站 | 久久久一区二区三区 | 国产l精品国产亚洲区久久 国产suv精品一区 | 国产激情视频 | 天天草夜夜 | 在线精品亚洲欧美日韩国产 | 在线观看日本 | 日本二区| 久久亚洲国产精品 | 欧美自拍视频 | 黄色av网站在线免费观看 | 成人av一区 | 日批免费网站 | 色综合一区 | 四色成人av永久网址 | 狠狠插天天干 |