ПредишенСледващото

В тази статия,

Определяне на клас или структура, подобна на чертежите, който определя действията, извършвани от вида. По същество, обектът е блок с памет разпределени и конфигуриран в съответствие с чертежа. Програмата може да създаде различни обекти от същия клас. Обектите се наричат ​​още случаи. Те могат да се съхраняват или в именувана променлива или в масив или събиране. Клиент код - код, който използва тези променливи да се позове на методи и достъп, за да отворите свойствата на обекта. В обектно-ориентиран език като C #, стандартната програма е съставена от няколко динамично взаимодействащи обекти.

забележка

Поведението на статичен тип различава от поведението както е описано тук. За допълнителна информация. Вижте Статични уроци и членовете Статично клас.

Копия структура случаи и класове

Случаите на класове са създадени с помощта на новия оператор. Следващият пример е тип лице и PERSON1 и човек 2 - или случаи на обекти от този тип.

Тъй като структурите са стойностни типове, в променлива, обект структура съхранява копие на целия обект. Копия от структури могат да бъдат създадени с помощта на новия оператор. обаче, това не е задължително, както е показано в следния пример:

Памет за P1 и P2 се разпределя в потока на стека. Тази памет е освободен заедно с вида или начина, по който е обявена. Това е една от причините, поради структурите се копират върху задача. Напротив, когато на изхода на всички препратки към обхвата на обекта, на CLR автоматично освобождава памет (извършва събиране на отпадъци), избран например. Възможността за детерминирана унищожаване на класа на обекта, на разположение в C ++, отсъства тук. За повече информация относно събирането на боклука в рамката за .NET, вижте. В събиране на боклука.

забележка

Разпределението на средно CLR процес памет и deallocation върху купчината успя значително оптимизирана. В повечето случаи не се наблюдава съществена разлика в разходите за разпределение на изпълнение инстанция на класа на куп и разпределението на инстанция структура на стека.

Идентификация на обекти и ценности на равенството

Сравнявайки два обекта за равенство, първо трябва да се определи дали е необходимо да знаете, има две променливи един обект в паметта или стойностите на един или повече от полетата са равни. Ако искате да сравните стойностите, трябва да решите дали обектът е инстанция на стойностни типове (структури) или референтни типове (класове, делегати, решетки).

За да се определи дали двете копия на място една памет реферирани (т.е., имат същото ID), използвайте статичния метод равно. (System.Object е имплицитно базов клас за всички видове стойност и видове достъп, включително структури и класове, дефинирани от потребителя.)

За да се определи дали полетата инстанция са дублирани в структурата на една и съща стойност, използват от ValueType.Equals. Тъй като всички структури косвено произтичат от System.ValueType. метод може да се нарече директно в обекта, както е показано в следващия пример:

При изпълнението използва System.ValueType равно размисъл, тъй като е необходимо да се определи на разположение в някоя структура терена. Когато създавате свои собствени модели отменят равен метод за осигуряване на ефективен алгоритъм за равенство, за вашия тип.

  • За да се определи дали стойностите на полетата в двата екземпляра на класа са еднакви, можете да използвате равен метод или оператор ==. Въпреки това, те трябва да се използва, само ако те имат преимущество или претоварена клас, за да се осигури по поръчка определение за равенство за обекти от този тип. Класът може също да приложи интерфейс IEquatable или интерфейс IEqualityComparer. И двата интерфейси осигуряват методи, които могат да се използват за проверка на равенство на ценности. Когато създавате свои собствени класове, Замяна на равно. трябва да изпълнява указанията на секциите практическо ръководство. Определяне на стойностите за вида на равенство и Object.Equals (Object).

теми, свързани с

Подкрепете проекта - споделете линка, благодаря!