如何进行有效的实例分享C操作?

2026-05-08 20:441阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计690个文字,预计阅读时间需要3分钟。

如何进行有效的实例分享C操作?

今天在Review一个老项目的时侯,看到一段奇特的代码。if (dto.Payment==null) continue; var entity=entries.FirstOrDefault(e=> e.LedgerEntryID==dto.LedgerEntryID); dto.Payment=entity.Payment; 其中,dto.Payment是一个字符串。

今天在Review一个老项目的时候,看到一段奇怪的代码。

if (dto.Payment == null) continue; var entity = entries.FirstOrDefault(e => e.LedgerEntryID == dto.LedgerEntryID); dto.Payment = entity?.Payment;

其中dto.Payment是一个PaymentDTO类的实例,entity?.Payment是一个Payment类的实例,PaymentDTO类和Payment类没有子父关系,所以不存在子类和父类之间的隐式转换。

奇怪的是Visual Studio的编译器没有提示任何编译错误。

打开PaymentDTO类的定义之后,发现了以下方法签名。

public static implicit operator PaymentDTO(Payment payment)

从方法签名上看,这就是重写PaymentDTO类型的操作符,但并不是我以前常用的+,-,*,/, ==等。

查询MSDN之后,才了解到implicit和explicit是一对转换操作符。

阅读全文

本文共计690个文字,预计阅读时间需要3分钟。

如何进行有效的实例分享C操作?

今天在Review一个老项目的时侯,看到一段奇特的代码。if (dto.Payment==null) continue; var entity=entries.FirstOrDefault(e=> e.LedgerEntryID==dto.LedgerEntryID); dto.Payment=entity.Payment; 其中,dto.Payment是一个字符串。

今天在Review一个老项目的时候,看到一段奇怪的代码。

if (dto.Payment == null) continue; var entity = entries.FirstOrDefault(e => e.LedgerEntryID == dto.LedgerEntryID); dto.Payment = entity?.Payment;

其中dto.Payment是一个PaymentDTO类的实例,entity?.Payment是一个Payment类的实例,PaymentDTO类和Payment类没有子父关系,所以不存在子类和父类之间的隐式转换。

奇怪的是Visual Studio的编译器没有提示任何编译错误。

打开PaymentDTO类的定义之后,发现了以下方法签名。

public static implicit operator PaymentDTO(Payment payment)

从方法签名上看,这就是重写PaymentDTO类型的操作符,但并不是我以前常用的+,-,*,/, ==等。

查询MSDN之后,才了解到implicit和explicit是一对转换操作符。

阅读全文