Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)

Бодибилдинг
Программы тренировок для занятий штангой, гантелями; описание тренажеров

Я записываю курсы!
  Курс валют

НБУ курс евро






c# структуры - не классы?! А что же это - struct VS class



Касательно вопросов по структурам, то все они достаточно просты. Ну к примеру.

Вопрос: что такое структура?

Ответ: структура – это тип. Тип-значения. Значимый тип. Я еще называю значимые типы стековыми типами, так проще понимать.

Вопрос: для чего используются структуры?

Ответ: чаще для обычной группировки логически связанных переменных и не более того. К примеру 3D-координаты точки представляются переменными x, y, z. Естественно, логично эти три переменные хранить в некотором контейнере. Можно было создать класс Point и разместить в нем свойства X, Y, Z. Но создавать целый класс и размещать его в куче для каки-нибудь трех простецких переменных уж сильно расточительно. Для этих целей лучше создать структуру.

Вопрос: чем структуры лучше классов?

Ответ: структуры не лучше и не хуже классов. Для небольших типов, не предназначенных для инкапсулирования законченного набора данных, подойдут структуры, для всех остальных случаев – классы. Если вам трудно сделать выбор между классом и структурой, выбирайте класс. В принципе, можете вообще забыть о пользовательских структурах, сама Microsoft так и советует отдавать предпочтение классам. Конечно, важно все таки понимать, что внешне структуры напоминают классы, однако принцип их размещения в памяти существенно отличается, что уже само по себе накладывает разные задачи на класс и структуру как таковые.

Однако, есть все же одно обстоятельство, в определенные моменты награждающее структуры преимущество перед классами – немедленное удаление объекта по выходу из блока видимости:

public void Method()
{
	MyStruct myStruct = new MyStruct();
}
//здесь myStruct уже не существует,
//он был вытолкнут из стека.

Как видим, если в данном методе при создании объекта использовался тип класса, а не структуры, то объект myStruct после завершения работы метода еще продолжал бы висеть в куче, ожидая сборщика мусора, что в некоторых случаях является не желательным.

Вопрос: как насчет наследования в структурах?

Ответ: структуры не могут наследовать другие структуры и не могут сами быть наследуемыми. Одним словом, структуры не поддерживают наследование. Соответственно, структуры не могут быть помечены модификатором доступа protected – наследования то нет. Однако структуры могут реализовывать интерфейсы.

Вопрос: выходит, структуры создаются как классы, а их объекты с помощью ключевого слова new ?

Ответ: да, оздание структур идентично созданию класса, только вместо ключевого слова class используется struct:

Struct MyStruct
{
	public int x, y, z;
}

Создать объект типа MyStruct:
MyStruct myStruct = new MyStruct();
В этом случае в стеке создастся группа переменных x, y, z и их значения будут содержать 0.

Заметьте, что структуры можно определить конструктор, но только с параметрами. Никак нельзя определить конструктор не принимающий параметров.

Если вы удивились в использовании оператора new при создании объекта структуры, то знайте, что оператор new для значимых (стековых) типов работает иначе, нежели для ссылочных типов. В нашем случае не происходит выделение памяти в куче под объект, а просто поля структуры размещаются в стеке. Кстати, обратите внимание на валидную запись int i = new int(); Написав так мы одним махов создаем в стеке переменную i и заносим в неё значение 0. Єта запись єквивалентна int i = 0; Оператор new для значимих типов – это всего лиш синтаксическая уловка. Ввиду этого, создать объект структуры возможно и так:
MyStruct myStruct;

Однако, перед использованием объекта нам вручную необходимо занести значения в поля объекта, хотя бы нули:

myStruct.x = 0; myStruct.y = 0; myStruct.z = 0;

Еще запомните, что для структур можно определить методы Dispose() и Close(), однако деструктор через переопределение метода Finalize() не поддерживается.

Вопрос: как насчет передачи структур в методы?

Ответ: исходя из тех соображений, что структуры являются значимыми типа, передача их в методы по умолчанию происходит по значению и изменения с переданными данными внутри метода не отобразятся на исходном объекте, в отличие от объектов классов.



Больше информации читайте по теме:



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Гудок Александр    24.03.2010 10:48:54
        

Еще хочу добавить, что структуры обычно используются в тех случаях, когда, группируя некоторые переменные поля в одну группу, мы не планируем создавать для них внутренние методы. Таким образом, если мы работаем, например, с комплексными числами, или координатами точек, то поля, представляющие эти данные можна загнать в класс, но этот класс не будет содержать методов. Вот тогда и логично оболочку Класс поменять на Структура. Главное правило при выборе структуры если класс не содержит методы и не планируется его наполнить ими, тогда следует задуматься над созданием структуры.




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Черный список покупателей
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок