字体不可变让程序员和 GC 都感到苦恼,因为您每次都需要创建一个新实例。
为什么 Font 是不可变的引用类型?
最佳答案
它简化了渲染系统的使用。
如果框架允许 Font 可变,则需要检测变化,并定期修改其呈现方式。由于 Font 创建了一个本地资源,保持这个不可变可以防止系统担心必须在内部重复地重新创建句柄。
此外,我不同意“程序员的苦恼”。通过使 Font 不可变,它使用户创建 Font 对象时发生的事情更加明显。如果你想要一个新的 Font,你需要创建一个新的 Font 对象,这又会创建新的原生字体资源。使 Font 不可变可以更清楚地了解正在发生的事情 - 您不太可能意外造成性能问题。
如果 Font 是可变的,那么您在更改 Font 属性时重复创建句柄就不太明显了。
关于c# - 为什么 Font 是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561126/