Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 09 2016 20:22:34
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Программирование на C#. Структуры


[Назад] [Интерфейсы]

1.4. Несколько слов о структурах в C#

В заключение, буквально пару слов о структурах в языке C#. В нашем примере вместо класса Point2D можно было бы определить аналогичную структуру, как это показано ниже:

using System;
namespace CSharpQuickGuide
{
    //Структура 'Точка на плоскости'
    public struct SPoint2D
    {
        //Поле и свойство X
        private double m_X;
        public double X
        { get { return m_X; } set { m_X = value; } }        
        //Поле и свойство Y
        private double m_Y;
        public double Y
        { get { return m_Y; } set { m_Y = value; } }
        //Конструктор с параметрами (X,Y)
        public SPoint2D(double _X, double _Y) 
            : this() { m_X = _X; m_Y = _Y; }
    }
}

Структуры в C# в сравнении с классами имеют следующие отличия:

  • Не являются ссылочными типами, поэтому хранятся в стеке, и как следствие, не создаются с использованием оператора new. Накладных расходов, связанных с выделением памяти конечно меньше, но и память стека более дорогая – не стоит городить структуры огромных размеров.

  • Структуры не поддаются наследованию. Поэтому из определения Point2D исчез protected конструктор и модификатор sealed.

  • Для любой структуры всегда определен конструктор по умолчанию, который каждое поле в соответствии с его типом инициализирует “нулевым” значением. Из Point2D именно по этой причине исчез конструктор по умолчанию, а во все остальные конструкторы пришлось добавить код явной инициализации всех полей.

  • Результат операций сравнения и присвоение структур с использованием операторов == и = в силу того, что структуры являются не ссылочными типами, а типами значений, отличается от результатов тех же манипуляций с экземплярами класса и аналогичен сравнению и присвоению примитивов типа int, double, bool и т.д.

На этом про классы, структуры, их поля, свойства и методы у меня пока все. Далее будет следовать обзор интерфейсов, которые для языка C# являются чем-то большим, чем просто контракты, выполняемые классами, их реализующими.



[Назад]

Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.