Компонент PropertyGrid позволяет отображать свойства класса в виде сетки, как это делает окно Properties в самой среде разработки. Чтобы компонент отобразил свойства нужного вам класса, просто присвойте этот класс свойству SelectedObject. Например, следующая строка заставит отобразить свойства кнопки Button1:
propertyGrid.SelectedObject = Button1;
Давайте представим, что нам нужно использовать PropertyGrid для отображения нужного нам набора значений. Как это сделать? Да очень просто – можно все эти свойства объединить в отдельный класс и использовать его, как любой другой стандартный класс из .NET Framework. Только чтобы свойства выглядели красиво, их нужно правильно оформить при описании класса.
Давайте напишем пример, в котором на главном окне будет только компонент PropertyGrid, где должны отображаться свойства программы потенциального приложений. Все свойства будут объединены в отдельном классе PropertiesClass, это очень удобно, красиво и будет соответствовать всем принципам ООП. Давайте рассмотрим, как правильно и красиво оформить класс, возможно, вы узнаете что-то новое из жизни .NET.
Существует множество методов сортировки в зависимости от скорости работы и сложности реализации. Самый простой, который приходит в голову большинству начинающих программистов - создать новый массив и в цикле искать наименьшим значения в основном массиве с переносом их в новый. Найдя первое наименьшее значение, начинают искать следующее, и так пока весь цикл не будет перенесен. Страшное дело, ведь алгоритм ест память, выполняется долго, а если массив уже отсортирован, то тратится тонна времени абсолютно впустую.
Недавно я увидел подобный код у опытного программиста, который хорошо знает базы данных и прекрасно решает производственные задачи. На вопрос: "А почему так", он сказал, что сложное придумывать лень а это реализовать очень просто.
Не секрет, что достаточно большая часть ответственности за безопасность кода лежит на функциях, особенно это относится к С/С++, где повсеместно используются строки, заканчиваются нулем. Это не только самый большой тормоз, но и самый дырявый тип данных. Второй источник проблем безопасности - нарушение логики или ошибки проектирования. Что страшнее? Я не берусь ответить на этот вопрос однозначно, хотя мне кажется, что вторая проблема опасноснее, потому что ее сложнее вычеслить.
Я затеял этот разговор не ради того, чтоб определить, что страшнее, а чтобы задуматься, почему мы не решаем проблемы безопасности и как это можно сделать.
Определить ошибки в логике очень сложно, а в большинстве случаев сделать это может только человек. Автоматизировать поиск можно, но только простейших просчетов типа не проинициализированной переменной. Все переменные должны иметь начальное значение, и эту проверку может, должен и умеют делать компиляторы. Что-то более сложное доверить компьютеру невозможно, потому что это человеческая логика пока не описывается машинным языком.