object GetValue(DependencyProperty dp) { // 从_effectiveValues中查找当前依赖项属性所对应的条目 EntryIndex entryIndex = this.LookupEntry(dp.GlobalIndex) EffectiveValueEntry entry; if (entryIndex.Found) { entry = this._effectiveValues[entryIndex.Index]; } else { // 创建默认的条目,其值为UnsetValue entry = new EffectiveValueEntry(dp, BaseValueSourceInternal.Unknown); } if (entry.Value != DependencyProperty.UnsetValue) { return entry.Value; // 返回条目中所记录的有效值 } // 如果条目中记录的值是无效的,那么创建该依赖项属性的默认条目,其所包含的值为默认值 PropertyMetadata metadata = dp.GetMetadata(this.DependencyObjectType); return EffectiveValueEntry.CreateDefaultValueEntry(dp, metadata.GetDefaultValue(this, dp)).Value; } 复制代码 所以说,WPF属性系统所指的更有效率并非是在执行时的属性访问速度,而是在一定程度上牺牲了执行速度而带来的内存占用降低。使用Flyweight模式实际上是大型应用程序实现中的一个常见选择。在程序中包含大量的具有相同类型的特定类型数据时,我们可以通过该模式非常有效地降低其所占用的内存。
05-06
05-06
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交