Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 22710|Відповідь: 0

[Джерело] Різниця між структурою та класом у C#

[Копіювати посилання]
Опубліковано 24.06.2016 11:53:06 | | |
Найважливіша різниця між класом і структурою полягає в тому, що class є еталонним типом, а struct — типом значення, і їх розподіл у пам'яті різний.

Що таке клас?

Клас, фундаментальне поняття в об'єктно-орієнтованому програмуванні, — це тип власної структури даних, яка зазвичай містить поля, атрибути, методи, атрибути, конструктори, індексери, оператори тощо. У .NET усі класи в кінцевому підсумку успадковують від класу System.Object, тому вони є типом посилання, тобто коли ви створюєте новий екземпляр класу, адреса цього екземпляра в керованій купі зберігається в стеку, а значення екземпляра зберігається в керованій купі.

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

Структура — це тип значення, який використовується для організації набору пов'язаних змінних в одну змінну сутність. Усі структури успадковуються від класу System.ValueType, тому вони є типом значення, тобто екземпляр структури створюється на стеку, де присвоєно потоку, і зберігає саме значення. Тож при використанні 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. Class підходить для великих і складних даних, а Struct — для нових типів, які часто використовуються як комбінація деяких даних.



Прикладні випадки: Struct має переваги у продуктивності, а Class — переваги об'єктно-орієнтованого розширення.

Тип, що використовується для базового сховища даних, розроблений як тип Struct, а тип, що використовується для визначення поведінки додатка, — як клас. Якщо ви не впевнені щодо майбутнього застосування цього типу, варто використовувати Class.




Попередній:Інструмент генерації приватного ключа Alipay RSA та відкритого ключа з одним кліком
Наступний:C# — зворотний клас допомоги MySQL, збережи його
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com