日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 自定义 implicit和explicit转换

發布時間:2025/3/17 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 自定义 implicit和explicit转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
explicit 和 implicit 屬于轉換運算符,如用這兩者可以讓我們自定義的類型支持相互交換
explicti 表示顯式轉換,如從 A -> B 必須進行強制類型轉換(B = (B)A)
implicit 表示隱式轉換,如從 B -> A 只需直接賦值(A = B)

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

namespace OperatorTest {/// <summary>/// 豬/// </summary>public class Pig{public Pig(string name){this.Name = name;}public string Name;//explicit 關鍵字用于聲明必須使用強制轉換來調用的用戶定義的類型轉換運算符。//static explicit operator target_type { source_type identifier }//target_type 目標類型//source_type 源類型//identifier Something/*轉換運算符將源類型轉換為目標類型。源類型提供轉換運算符。與隱式轉換不同,必須通過強制轉換的方式來調用顯式轉換運算符。如果轉換操作可能導致異常或丟失信息,則應將其標記為 explicit。這可以防止編譯器無提示地調用可能產生無法預見后果的轉換操作*/public static implicit operator Pig(Monkey value){Pig mk = new Pig(value.Name + ":猴子變豬!!");return mk;}} namespace OperatorTest {/// <summary>/// 猴子/// </summary>public class Monkey{public Monkey(string name){this.Name = name;}public string Name;//implicit 關鍵字用于聲明隱式的用戶定義類型轉換運算符。//static implicit operator target_type { source_type identifier }public static explicit operator Monkey(Pig value){Monkey mk = new Monkey(value.Name + ":豬變猴子!!");return mk;}}調用:

Monkey monkey = new Monkey("悟空");//隱式轉換 猴子變豬Pig monkeyToPig = monkey;MessageBox.Show(monkeyToPig.Name);Pig pig = new Pig("八戒");//顯式轉換 豬變猴子Monkey pigToMonkey = (Monkey)pig;MessageBox.Show(pigToMonkey.Name);
輸出:



應用:
比如在實際操作中將一個對象A(或者一個實體)序列化成xml進行存儲,那么可以在該對象A的類中定義一個explicit operator,來實現將符合要求的xml內容轉換為對象或者實體。
當然也可以在對象A的類中定義一個函數來實現這個處理,不過這樣有可能會多出一步,那就是當該函數不是靜態函數時,需要先實例化該對象來調用相應的處理函數。


參考:

explicit 關鍵字

implicit 關鍵字

operator 關鍵字


demo下載

總結

以上是生活随笔為你收集整理的C# 自定义 implicit和explicit转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。