Почему Шрифт неизменен?

Подключать Excel к Доступу с помощью VBA очень полезно, я использую его в своей профессии каждый день. Строка подключения, которую я использую, согласно программе, найденной в ссылке ниже. Программа может быть автоматизирована для выполнения в многочисленных связях или задачах на выстреле, но основной код соединения выглядит одинаково.Удачи!

http://vbaexcel.eu/vba-macro-code/database-connection-retrieve-data-from-database-querying-data-into-excel-using-vba-dao

12
задан R. Martinho Fernandes 1 February 2011 в 01:34
поделиться

4 ответа

Это упрощает использование системы рендеринга.

Если бы фреймворк позволял изменять шрифт Font, ему нужно было бы обнаруживать изменения и дорабатывать, как это происходит на регулярной основе. . Поскольку Font создает собственный ресурс, сохранение этого неизменяемого позволяет системе не беспокоиться о необходимости повторного создания внутренних дескрипторов на постоянной основе.

Кроме того, я не согласен с точки зрения «бедствия для программиста». Сделав Font неизменяемым, становится более очевидным, что происходит, когда пользователь создает объект Font. Если вам нужен новый шрифт, вам необходимо создать новый объект Font, который, в свою очередь, создает новые ресурсы собственных шрифтов. Если сделать шрифт неизменяемым, станет более понятным, что происходит - у вас меньше шансов случайно создать проблему с производительностью.

Were Font mutable,

29
ответ дан 2 December 2019 в 03:02
поделиться

Ну, задайте себе несколько вопросов.

Во-первых, является ли шрифт логически изменяемым элементом, например списком покупок, или неизменным элементом, например числом? Если вы моделируете список покупок в программе, имеет смысл сделать его изменяемым, потому что вы обычно думаете об одном списке продуктов, содержимое которого изменяется по мере того, как у вас заканчиваются или покупаются определенные товары. Но числа, которые вы обычно моделируете как неизменные - число 12 - это число 12, отныне и навсегда.

Я думаю, что «Helvetica 12 point bold» - это фиксированная, неизменная вещь, например число, а не то, что я могу менять.

Во-вторых, шрифт логически больше похож на значение, которое вы можете копировать, или это больше похоже на единственную вещь, на которую вы можете ссылаться? Я не думаю о наличии «двух копий» Helvetica; Я думаю о Helvetica. В то время как числа я считаю разными копиями для разных целей - когда у меня 12 пунктов в моем списке покупок и 12 ключей на моем брелоке, я не думаю, что обе эти вещи «относятся к 12».

Поскольку я считаю шрифты неизменяемыми и упоминаемыми, а не изменяемыми и копируемыми по значению, я лично моделирую шрифты как неизменяемые ссылочные типы. Возможно, ваше представление о шрифтах отличается от моего.

а не как изменяемые и копируемые по значению, я лично моделировал бы шрифты как неизменяемые ссылочные типы. Возможно, ваше представление о шрифтах отличается от моего.

а не как изменяемые и копируемые по значению, я лично моделировал бы шрифты как неизменяемые ссылочные типы. Возможно, ваше представление о шрифтах отличается от моего.

14
ответ дан 2 December 2019 в 03:02
поделиться

Они не являются структурами, потому что у них должны быть финализаторы для обертывания нижележащих объектов и обеспечения разумной реализации IDisposable . Что произойдет, если вы Dispose () создадите свою собственную копию struct ? Вы каждый раз клонируете ручку?

На самом деле это не сильно нагружает сборщик мусора ...

Он также позволяет безопасно повторно использовать Шрифт , не беспокоясь о том, что он изменит половину способ выполнения операции ;-p

8
ответ дан 2 December 2019 в 03:02
поделиться

Я не согласен, это беспокоит программиста. В BCL есть множество неизменяемых типов, которые ежедневно используются программистами и не вызывают никаких проблем. Например, System.String.

Одно из преимуществ неизменности заключается в том, что вам не нужно каждый раз создавать новый экземпляр. Вы можете повторно использовать один и тот же тип шрифта столько раз, сколько захотите, потому что он не изменится. С другой стороны, если бы он был изменяемым, вам нужно было бы каждый раз делать копию, чтобы гарантировать, что никто другой не изменил его из-под вас.

Наконец, Font на самом деле не является неизменяемым классом в самом строгом смысле слова слово. Он реализует IDisposable, а в методе Dispose удаляет базовый собственный объект.

4
ответ дан 2 December 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: