Страницы

Поиск по вопросам

пятница, 5 октября 2018 г.

Пользовательская структура как точка входа в программу

Может ли быть пользовательская структура быть точкой входа (main entry) в программе?
Вопрос риторический, ибо насколько мне показывает IDE, такое возможно(т.е. достаточно создать Main метод,и все пройдет на ура).
Но отсюда вытекает иной вопрос - а чем это чревато и считается ли это дурным тонном!?


Ответ

точкой входа в программу в языке C# является метод Main. Этот метод обязан быть статическим. Статические элементы класса или структуры, являются самостоятельными программными единицами, не требуют наличия экземпляра для вызова и, фактически, используют имя класса или структуры в которой объявлены только для расширения собственного имени и обеспечения его уникальности. Статические члены не наследуются, не могут быть абстрактными или виртуальными, вы можете даже писать полностью в процедурном стиле, используя только статические классы и их элементы.
Структура - это по сути класс, но с ограниченными возможностями, в котором на уровне языка запрещено использовать некоторые принципы ООП (запрещено наследование от других классов или структур, но реализация интерфейсов разрешена, остальное - следствия). Ну и да, структуры относятся к ValueType, что накладывает еще некоторые ограничения, но, в то же время, дает возможности недоступные классам. Однако по части статических элементов - структуры ни чем от классов не отличаются, разве что сама структура не может быть статической.
Поэтому, с точки зрения CLR, нет никакой разницы, к чему будет привязан метод Main, и никаких последствий от такой замены не будет. Другой вопрос. как вы будете использовать этот класс или структуру в дальнейшем, но это уже действительно другой вопрос.

Комментариев нет:

Отправить комментарий