• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天下

            記錄修行的印記

            C#關鍵字implicit 和 explicit

            C#關鍵字implicit 和 explicit

            explicit(C# 參考)
            explicit 關鍵字用于聲明必須使用強制轉換來調用的用戶定義的類型轉換運算符。 例如,在下面的示例中,此運算符將名為 Fahrenheit 的類轉換為名為 Celsius 的類:
            // Must be defined inside a class called Fahrenheit:
            public static explicit operator Celsius(Fahrenheit fahr)
            {
                
            return new Celsius((5.0f / 9.0f* (fahr.degrees - 32));
            }
            可以如下所示調用此轉換運算符:
            Fahrenheit fahr 
            = new Fahrenheit(100.0f);
            Console.Write(
            "{0} Fahrenheit", fahr.Degrees);
            Celsius c 
            = (Celsius)fahr;
            轉換運算符將源類型轉換為目標類型。 源類型提供轉換運算符。 與隱式轉換不同,必須通過強制轉換的方式來調用顯式轉換運算符。 如果轉換操作可能導致異常或丟失信息,則應將其標記為 
            explicit。 這可以防止編譯器無提示地調用可能產生無法預見后果的轉換操作。
            省略此強制轉換將導致編譯時錯誤 CS0266。

            implicit(C# 參考)
            implicit 關鍵字用于聲明隱式的用戶定義類型轉換運算符。 如果可以確保轉換過程不會造成數據丟失,則可使用該關鍵字在用戶定義類型和其他類型之間進行隱式轉換。
            隱式轉換可以通過消除不必要的類型轉換來提高源代碼的可讀性。 但是,因為隱式轉換不需要程序員將一種類型顯式強制轉換為另一種類型,所以使用隱式轉換時必須格外小心,以免出現意外結果。 一般情況下,隱式轉換運算符應當從不引發異常并且從不丟失信息,以便可以在程序員不知曉的情況下安全使用它們。 如果轉換運算符不能滿足那些條件,則應將其標記為 
            explicit。 
            class Digit
            {
                
            public Digit(double d) { val = d; }
                
            public double val;
                
            // other members

                
            // User-defined conversion from Digit to double
                public static implicit operator double(Digit d)
                {
                    
            return d.val;
                }
                
            //  User-defined conversion from double to Digit
                public static implicit operator Digit(double d)
                {
                    
            return new Digit(d);
                }
            }

            class Program
            {
                
            static void Main(string[] args)
                {
                    Digit dig 
            = new Digit(7);
                    
            //This call invokes the implicit "double" operator
                    double num = dig;
                    
            //This call invokes the implicit "Digit" operator
                    Digit dig2 = 12;
                    Console.WriteLine(
            "num = {0} dig2 = {1}", num, dig2.val);
                    Console.ReadLine();
                }
            }

            posted on 2016-06-17 14:06 天下 閱讀(387) 評論(0)  編輯 收藏 引用 所屬分類: C#

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評論

            久久精品亚洲一区二区三区浴池 | 久久婷婷激情综合色综合俺也去| 久久一区二区三区99| 91超碰碰碰碰久久久久久综合 | 久久精品蜜芽亚洲国产AV| 久久精品国产亚洲AV无码娇色| 国产三级久久久精品麻豆三级| 精品久久人妻av中文字幕| 欧美伊香蕉久久综合类网站| 亚洲一区二区三区日本久久九| 超级碰久久免费公开视频| 午夜精品久久久内射近拍高清| 久久久无码精品亚洲日韩京东传媒 | 久久婷婷国产麻豆91天堂| 久久男人AV资源网站| 久久久一本精品99久久精品88| …久久精品99久久香蕉国产| 99久久精品久久久久久清纯| 青春久久| 99精品国产在热久久无毒不卡| 国产L精品国产亚洲区久久| 久久久久99这里有精品10| 无码国产69精品久久久久网站| 久久青青草原综合伊人| 一本色道久久99一综合| 91精品日韩人妻无码久久不卡| 久久精品国产免费观看三人同眠| 久久中文娱乐网| 久久99国产精品99久久| 色99久久久久高潮综合影院| 欧美精品一区二区精品久久| 久久精品成人免费国产片小草| 国产精品美女久久久久久2018| 中文精品99久久国产| 久久国产精品国语对白| 久久中文字幕人妻丝袜| 日产精品久久久一区二区| 香蕉久久夜色精品国产2020| 99久久国产免费福利| 久久人妻少妇嫩草AV蜜桃| 国产精品久久久天天影视香蕉 |