c# - 为什么 Font 是不可变的?

标签 c# fonts immutability

字体不可变让程序员和 GC 都感到苦恼,因为您每次都需要创建一个新实例。

为什么 Font 是不可变的引用类型?

最佳答案

它简化了渲染系统的使用。

如果框架允许 Font 可变,则需要检测变化,并定期修改其呈现方式。由于 Font 创建了一个本地资源,保持这个不可变可以防止系统担心必须在内部重复地重新创建句柄。

此外,我不同意“程序员的苦恼”。通过使 Font 不可变,它使用户创建 Font 对象时发生的事情更加明显。如果你想要一个新的 Font,你需要创建一个新的 Font 对象,这又会创建新的原生字体资源。使 Font 不可变可以更清楚地了解正在发生的事情 - 您不太可能意外造成性能问题。

如果 Font 是可变的,那么您在更改 Font 属性时重复创建句柄就不太明显了。

关于c# - 为什么 Font 是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561126/

相关文章:

c# - 使用 NodaTime 正确处理开放时间

c# regex 和 [] expression ,为什么 [+*/-] 无法解析?

html - 如何找到特定大小的特定字体的ex值

html - 如何将 Google 字体 .ttf 文件转换为其他文件类型以支持所有浏览器

javascript - 只需使用 Immutable.js 将对象分配给变量即可克隆新对象

c++ - C# 的 readonly 字段修饰符的 C++ 等价物是什么?

java - Guava 的不可变集合的缺陷?

c# - 如何使用 DynamicResource 更新 SolidColorBrush 颜色?

c# - 如何增加 .NET Remoting over TCP 使用的线程数?

java - 如何在项目中拥有字体并从 NetBeans IDE 中的项目文件夹中使用字体?