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