Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 22710|Отговор: 0

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

[Копирай линк]
Публикувано в 24.06.2016 г. 11:53:06 ч. | | |
Най-съществената разлика между клас и структура е, че класът е референтен тип, докато 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 не поддържа наследяване, нейните членове не могат да бъдат модифицирани с защитен или защитен вътрешен

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







11. Класът може да дефинира деструктор, но Struct не може

12. Клас е подходящ за големи и сложни данни, а Struct е подходящ за нови типове, които често се използват като комбинация от някои данни.



Приложими случаи: Struct има предимства в производителността, а Class има предимства на обектно-ориентирано разширение.

Типът, използван за основното хранилище на данни, е проектиран като Struct тип, а типът, използван за дефиниране на поведението на приложението, е Клас. Ако не сте сигурни за бъдещото приложение на този тип, трябва да използвате Class.




Предишен:Инструмент за генериране на частен ключ на Alipay RSA и публичен ключ с едно кликване
Следващ:C# обърни помощен клас за MySQL и го запази
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com