Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 22710|Ответ: 0

[Источник] Разница между структурой и классом в C#

[Скопировать ссылку]
Опубликовано 24.06.2016 11:53:06 | | |
Самое существенное отличие класса и структуры в том, что класс является эталонным типом, а struct — значением, и их распределение в памяти отличается.

Что такое класс?

Класс, фундаментальное понятие в объектно-ориентированном программировании, представляет собой тип пользовательской структуры данных, которая обычно содержит поля, атрибуты, методы, атрибуты, конструкторы, индексаторы, операторы и т. д. В .NET все классы в конечном итоге наследуются от класса System.Object, то есть они являются типом ссылки, то есть при новом экземпляре класса адрес этого экземпляра в управляемой куче хранится в стеке, а значение экземпляра — в управляемой куче.

Что такое структура?

Структура — это тип значения, используемый для организации набора связанных переменных в одну переменную сущность. Все структуры наследуются от класса System.ValueType, поэтому они являются типом значения, то есть экземпляр struct создаётся в стеке, где присваивается поток, и хранит само значение. Поэтому, используя struct, мы можем рассматривать её как базовый тип класса, например int и char.



1. класс — это тип опоры, а structs — тип значения

Поскольку класс является типом отсылки, класс можно установить как null. Но мы не можем сделать struct null, потому что это тип значения.




2. Когда вы создаёте класс, он будет создан на куче. И вы создаёте структуру, которая будет создана на стеке

3. Вы используете ссылку на экземпляр класса. И вы не используете ссылку на структуру. (вместо этого используйте их напрямую)

4. Когда мы передаём класс как аргумент методу, мы передаём ссылку. struct передаёт значение, а не ссылку.

5. Структуры не могут иметь инициализаторы, классы могут иметь инициализаторы.





6. Классы могут иметь очевидные конструкторы без параметров, но Structs не могут





7. Новое ключевое слово должно быть запущено до использования класса, и Struct не нуждается в нём




8. Класс поддерживает наследование и полиморфизм, Struct — нет. Примечание: Но Struct может реализовать интерфейсы так же, как классы

9. Поскольку Struct не поддерживает наследование, её элементы нельзя модифицировать с помощью защищённого или защищённого Internal

10. Конструктор Class не обязан инициализировать все поля, а конструктор Struct должен инициализировать все поля







11. Класс может определить деструктора, но Struct — не может

12. Класс подходит для больших и сложных данных, а Struct — для новых типов, которые часто используются как комбинация некоторых данных.



Применимые случаи: Struct имеет преимущества в производительности, а Class — преимущества объектно-ориентированного расширения.

Тип, используемый для базового хранилища данных, разработан как тип Struct, а тип, используемый для определения поведения приложения, — как класс. Если вы не уверены в будущем применении этого типа, стоит использовать Class.




Предыдущий:Инструмент генерации приватного ключа Alipay RSA и открытого ключа с помощью одного клика
Следующий:C# обратный курс помощи MySQL — сохраните его
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com