我知道隐式和显式转换是什么。现在我有一个问题,我无法找到满意的答案。
答案 0 :(得分:1)
这很简单:
答案 1 :(得分:1)
隐式转换更方便,因为您不必在转换时添加显式转换。但是,您可能希望选择显式转换以向开发人员清楚地表明转换已完成。
答案 2 :(得分:1)
对于变量:
隐式转换使开发人员不必每次都提及类型。它对数字数据类型很有用:
Int32 integerNumber = 20;
Decimal decimalNumber = integerNumber; //It is OK
但是 - 您应该只使用显式转换,其中转换完全不同的类型:
CustomString customString = "This is custom string";
//Int32 customStringLength = customString; //It is NOT OK
Int32 customStringLength = (Int32)customString; //It is OK
对于接口:
interface IFooBar
{
void MakeABarrelRoll();
}
隐式接口实现允许所有代码“看到”其方法:
class FooBar: IFooBar
{
public void MakeABarrelRoll()
{
//Make a barrel roll here
}
}
我们可以直接从对象中调用它:
FooBar foobar = new FooBar();
foobar.MakeABarrelRoll(); //Works
显式接口实现只有在对象明确地转换为接口时才会打开它的方法。
class FooBar: IFooBar
{
public void IFooBar.MakeABarrelRoll()
{
//Make a barrel roll here
}
}
我们可以不直接从对象中调用它:
FooBar foobar = new FooBar();
//foobar.MakeABarrelRoll(); //Does not work
((IFooBar)foobar).MakeABarrelRoll(); //Works
答案 3 :(得分:0)
隐式转换必须始终有效,而显式转换可能会引发异常。
答案 4 :(得分:0)
很少使用隐式转换,因为它会降低代码的可读性。显式转换更具可读性,但不太方便。
最后,根据我的经验,最可读的方法是提供ToTargetType
方法,除了使用时的可读性之外,还可以通过IDE中的方法列表轻松发现(查看您需要查看的转换运算符)课程的来源)。