Страницы

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

суббота, 30 ноября 2019 г.

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

#c_sharp #память #структуры #clr


Может ли быть пользовательская структура быть точкой входа (main entry) в программе?  

Вопрос риторический, ибо насколько мне показывает IDE, такое возможно(т.е. достаточно
создать Main метод,и все пройдет на ура).  

Но отсюда вытекает иной вопрос - а чем это чревато и считается ли это дурным тонном!?  
    


Ответы

Ответ 1



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

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

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