pas*_*ena 6 c# wpf dependency-properties
据说WPF的设计者已经使其经济或更高性能.有人可以解释一下在WPF属性系统更经济的情况下会发生什么事情的例子吗?
Jon*_*Jon 13
您可能指的是依赖属性比普通CLR属性"更便宜"的事实.
简而言之:
依赖属性是使用稀疏数据结构实现的,如果在对象上设置了属性值,则只为该属性值分配内存.相反,标准CLR属性值作为字段存储在定义属性的类的每个对象中,即使所有这些对象都将属性设置为其默认值.
因此,例如,如果我们有100个对象,int每个对象具有100个CLR属性,那么int即使所有这些对象具有相同的默认值(0),我们也会使用10000 s的内存.
如果属性是依赖属性,我们根本不会使用任何额外的内存:WPF不需要记住任何属性的值,因为它知道你没有从默认值更改它.
当然,上述内容相当简单,并未涵盖依赖属性优于CLR属性的所有优点,但它应充分说明"DP具有更高性能"的说明.
实际上,控件本身并不存在WPF控件的大多数"属性".他们选择添加一个"属性包",而不是将几十个(大多数未使用的)属性添加到(base-)类,而是仅包含实际设置的属性的Dictionary.
作为奖励,它允许环境和注入属性.