簡體   English   中英

自定義隱式投射與公共財產

[英]Custom Implicit Casting vs. Public Property

好的,我有一個頂級類,用於監視一堆不同的值,范圍從值類型到引用類型。 現在我的問題是為頂級類設置隱式轉換而不是設置公共屬性之間的區別是什么。

一些代碼來說明。

這個:

 public static implicit operator int(TopLevel TP)
 {
       return TP.DataLevel1.DataLevel2.DataLeverl3.Data;
 }

相比:

 public int DataLevel3Value
 {
      get
      {
          return this.DataLevel1.DataLevel2.DataLeverl3.Data;
      }
 }

與Property版本相比,我是否有理由不想使用Implicit版本? 以下代碼是否有效?

 (TP == 10) == (TP.DataLevel3Value == 10) == true;

我確實意識到隱式轉換的可能性會導致略微缺乏可讀性,但這是一個只有一個其他程序員的小項目。 我們只是好奇是否有嚴重的缺點會妨礙我們缺少的程序功能。

絕對不要寫這樣的隱式演員表。 當從一種類型轉換為另一種類型時,沒有數據丟失時,保留隱式強制轉換。 文檔

implicit關鍵字用於聲明隱式用戶定義的類型轉換運算符。 如果保證轉換不會導致數據丟失使用它來啟用用戶定義類型與其他類型之間的隱式轉換。

在您的示例中,它確實會導致信息丟失。 該物業顯然是一個更好的方式。

你提到它會降低你的可讀性,而你的絕對正確。 在絕大多數情況下,您應該傾向於提高可讀性而不是任何語法糖,這只能讓您編寫具有較少字符的代碼,而不管項目大小如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM