gpt4 book ai didi

c# - 隐式与显式转换运算符最佳实践

转载 作者:行者123 更新时间:2023-11-30 13:57:51 25 4
gpt4 key购买 nike

我最近发现了 C# 中的转换运算符。现在我知道我可以覆盖运算符以允许:

byte b1 = new Foo();
byte b2 = (byte) new Foo();

但是从 Foo 消费者的角度来看,我不知道哪个更容易理解可以进行转换。我特别考虑将来/将不得不维护我的代码的初级程序员(或者如果我几天前看到这个,我自己会怎么想)。

一方面,隐式转换看起来有点奇怪。看起来像是在分配不同的、不兼容的类型。而且 IDE 的智能感知不会告诉您有一种方法可以做到这一点而不会引起编译器的提示。

另一方面,显式转换看起来像是强制转换。好的,这是一种告诉编译器“我知道我在做什么,不要提示”的方式。但是,无法访问 Foo 的代码(或者不知道 C# 中存在转换运算符)的程序员如何执行转换并执行预期的操作?

哪种类型的类型转换在哪些情况下更受欢迎?还有第三种方法吗?

最佳答案

如果 Foo 本质上显然是数字,并且转换正在扩大,那么隐式转换对消费者很有用。

如果转换正在缩小,则运算符应该是显式的。


如果 Foo 不是数字(而且 Foo 确实不是),那么它不应该转换为数字类型。

实现一些其他方法或属性,这些方法或属性将执行将 Foo 实例转换为数字类型的操作。该函数的名称应该为调用者提供语义含义,描述返回的值以及为返回它而执行的任何操作。


您不应该回避编程语言的某些部分,因为读者可能无法理解。您应该使用简单的散文评论您的代码,以解释您的决定以及您做出这些决定的原因。解释如何最大程度地利用您的类型。

使用最适合您正在建模的信息系统的语言特征。谁知道呢,读者可能会学到一些东西。

关于c# - 隐式与显式转换运算符最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19421864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com