explicit 和 implicit 的含義?

作者: Clark Zheng  來源: 博客園  發布時間: 2008-09-10 19:51  閱讀: 11024 次  推薦: 1   原文鏈接   [收藏]  

系列文章導航:

靜態成員和非靜態成員的區別?

const 和 static readonly 區別?

extern 是什么意思?

abstract 是什么意思?

internal 修飾符起什么作用?

sealed 修飾符是干什么的?

override 和 overload 的區別?

什么是索引指示器?

new 修飾符是起什么作用?

this 關鍵字的含義?

可以使用抽象函數重寫基類中的虛函數嗎?

C#基礎概念之密封類,屬性訪問器,接口

類和結構的區別?

C#基礎概念之抽象類,接口,接口多繼承

別名指示符是什么?

如何手工釋放資源?

C#基礎概念之P/Invoke,StringBuilder 和 String

explicit 和 implicit 的含義?

params 有什么用?

什么是反射?

 

23.explicit 和 implicit 的含義?
答:


explicit 和 implicit 屬于轉換運算符,如用這兩者可以讓我們自定義的類型支持相互交換

explicti 表示顯式轉換,如從 A -> B 必須進行強制類型轉換(B = (B)A)

implicit 表示隱式轉換,如從 B -> A 只需直接賦值(A = B)

隱式轉換可以讓我們的代碼看上去更漂亮、更簡潔易懂,所以最好多使用 implicit 運算符。不過!如果對象本身在轉換時會損失一些信息(如精度),那么我們只能使用 explicit 運算符,以便在編譯期就能警告客戶調用端

示例:

Code
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Example23
{
    class Program
    {
        //本例靈感來源于大話西游經典臺詞“神仙?妖怪?”--主要是我實在想不出什么好例子了
        class Immortal
        {
            public string name;
            public Immortal(string Name)
            {
                name = Name;
            }
            public static implicit operator Monster(Immortal value)
            {
                return new Monster(value.name + ":神仙變妖怪?偷偷下凡即可。。。");
            }
        }
        class Monster
        {
            public string name;
            public Monster(string Name)
            {
                name = Name;
            }
            public static explicit operator Immortal(Monster value)
            {
                return new Immortal(value.name + ":妖怪想當神仙?再去修煉五百年!");
            }
        }
        static void Main(string[] args)
        {
            Immortal tmpImmortal = new Immortal("紫霞仙子");
            //隱式轉換
            Monster tmpObj1 = tmpImmortal;
            Console.WriteLine(tmpObj1.name);
 
            Monster tmpMonster = new Monster("孫悟空");
            //顯式轉換
            Immortal tmpObj2 = (Immortal)tmpMonster;
            Console.WriteLine(tmpObj2.name);
 
            Console.ReadLine();
        }
    }
}

 

 

結果:
紫霞仙子:神仙變妖怪?偷偷下凡即可。。。
孫悟空:妖怪想當神仙?再去修煉五百年!

1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()