我只是看到它正在最近的答案之一中使用:
public static implicit operator bool(Savepoint sp)
{
return sp != null;
}
为什么我们这里需要隐含词,这是什么意思?
最佳答案
隐式意味着转换不需要在代码中进行强制转换。
您现在可以执行以下操作:
Savepoint point = new Savepoint();
if(point) // becomes a bool using your operator
{
}
不必这样做:
Savepoint point = new Savepoint();
if((bool)point) // an "explicit" conversion
{
}
为什么这是有用的区别的一个示例是数字类型。从“较小”类型到“较大”类型的隐式转换,例如:
float f = 6.5;
double d = f; // implicit conversion
但是将较大的类型转换为较小的类型可能很危险,因此只能进行显式转换,从而迫使用户明确说明他确实打算执行相关操作:
long l = 20;
// short s = l;
short s = (short)l; // explicit conversion
关于c# - 隐式运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/598965/