繁体   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