标准的CLR属性值是存储在定义该属性的实例中的,即使这个属性自创建以后从来没有被复制或者更改,它依然会占用内存空间。
而依赖属性的值只有被设置为非默认值的时候才会被存储(值不占用内存空间),而当访问没有设置值的依赖属性将会只返回一个默认的值。
被设置的依赖属性的值会被存在DependencyObject 类的一个数组中,这个数组,通过GetValue 和SetValue 方法读写实现,是DependencyObject 派生类的一部分,这个内部的数组中包含着所有被设置了值的依赖属性的有效值。
*******************
通过上面的描述,个人总结就是,如果依赖属性没有设置值的话,继承自DependencyObject 的数组中没有它的值,因此它的值不占用内存空间。