自定义隐式强制转换与公共属性

本文关键字:属性 转换 自定义 | 更新日期: 2023-09-27 18:13:18

好的,所以我有一个顶层类,用于监控一堆不同的值,范围从值类型到引用类型。现在我的问题是,为顶级类设置隐式强制类型转换与设置公共属性之间的区别是什么?

一些代码来说明。

:

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

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

与属性版本相比,我不想使用隐式版本是否有原因?下面的代码是否有效?

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

我确实意识到隐式转换的可能性引入了轻微的可读性不足,但这是一个只有另一个程序员的小项目。我们只是想知道是否有严重的缺陷会抑制我们所缺少的程序的功能。

自定义隐式强制转换与公共属性

绝对不要写这样的隐式强制转换。隐式强制转换保留用于从一种类型转换为另一种类型时不会丢失数据的情况。来自文档:

隐式关键字用于声明隐式用户定义类型转换操作符。使用它来启用用户定义类型和另一类型之间的隐式转换,如果转换保证不会导致数据丢失,则使用

在您的示例中,它确实导致信息丢失。

你提到它降低了可读性,你完全正确。在绝大多数情况下,无论项目大小如何,您都应该倾向于提高可读性,而不是仅仅让您编写更少字符的代码的语法糖。