将 Integer 分配给 double 是非常合法的。
如果我们能做到
double d = 3;
d 被分配3.0
但为什么这在附加属性中失败了?
设想
我创建了一个附加属性
public static readonly DependencyProperty ActualWidthBeforeHidingProperty =
DependencyProperty.RegisterAttached("ActualWidthBeforeHiding",
typeof(double), typeof(MainWindow), new FrameworkPropertyMetadata(0));
public static double GetActualWidthBeforeHiding(DependencyObject element)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
return Convert.ToDouble(element.GetValue(ActualWidthBeforeHidingProperty));
}
public static void SetActualWidthBeforeHiding(DependencyObject element, double value)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
element.SetValue(ActualWidthBeforeHidingProperty, value);
}
我编译了代码。没有编译时错误。
但是当我尝试运行应用程序时,它给出了错误
在上面的代码中我不小心分配了 0new FrameworkPropertyMetadata(0)
并且代码运行成功。
但我的印象是,您可以将精度较低的 DataType(即 Integer)分配给精度较高的 DataType(即 0.0 Double)?
那么为什么会偏离依赖属性的基本编程概念呢?