Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Понятие «Разделяемые методы»Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Разделяемый класс или структура могут содержать разделяемый метод. Одна часть класса содержит сигнатуру метода. В той же или в другой части можно определить дополнительную реализацию. Если реализация не предоставлена, то метод и все вызовы метода удаляются во время компиляции. Разделяемые методы позволяют разработчику одной части класса определить метод, схожий с событием. Разработчик другой части класса может решить, реализовывать этот метод или нет. Если метод не реализован, то компилятор удаляет сигнатуру метода и все вызовы этого метода. Вызовы метода, включая любые результаты, которые могли бы произойти от оценки аргументов в вызовах, не имеют эффекта во время выполнения. Таким образом, любой код в разделяемом классе может свободно использовать разделяемый метод, даже если реализация не предоставлена. Во время компиляции и выполнения программы не возникнут никакие ошибки, если метод будет вызван, но не реализован. Разделяемые методы особенно полезны для настройки автоматически созданного кода. Они позволяют зарезервировать имя и сигнатуру метода, чтобы автоматически созданный код мог вызвать метод, а разработчик мог сам решить, реализовывать этот метод или нет. Как и разделяемые классы, разделяемые методы позволяют организовать совместную работу автоматически созданного кода и кода, созданного человеком, без дополнительных затрат во время выполнения. Объявление разделяемого метода состоит из двух частей: определения и реализации. Они могут находиться в разных частях или в одной и той же части разделяемого класса. Если объявление реализации отсутствует, то компилятор оптимизирует код, удаляя как объявление определения, так и все вызовы метода. Пример:
// Файл file1.cs partial void onNameChanged(); // Файл file2.cs partial void onNameChanged() { // Тело метода }
Некоторые особенности при работе с такими методами:
Понятие «Структура» Понятие «Структура»
Структура — это фактически объект с «данными», является типом значения и не является классом (класс — это ссылочный тип). Структуры определяются с помощью ключевого слова struct, например:
public struct PostalAddress { // Свойства, методы, события, поля (переменные) и прочее... }
Структуры используют большую часть того же синтаксиса, что и классы, однако они более ограничены по сравнению с последними:
Тип struct подходит для создания несложных объектов, таких как Point, Rectangle и Color. Хотя точку удобно представить в виде класса с автоматически реализуемыми свойствами, в некоторых сценариях структура может оказаться более эффективной. Например, при объявлении массива из 1000 объектов Point потребуется выделить дополнительную память для хранения ссылок на все эти объекты, и структура в таком случае будет более экономичным решением. Поскольку.NET Framework уже содержит объект с именем Point, структура в данном примере называется вместо этого «CoOrds»:
public struct CoOrds { public int x, y;
public CoOrds(int p1, int p2) { x = p1; y = p2; } }
Определение конструктора по умолчанию (без параметров) для структуры является ошибкой. Ошибкой также является инициализация поля экземпляра в основной части структуры. Можно инициализировать члены структуры с помощью параметризованного конструктора или путем доступа к членам по отдельности после объявления структуры. Любые закрытые или в ином случае недоступные члены можно инициализировать только в конструкторе. При создании объекта структуры с помощью оператора new объект, создаётся и вызывается соответствующий конструктор. В отличие то классов структуры можно создавать без использования оператора new. В таком случае вызов конструктора отсутствует, что делает выделение более эффективным. Однако поля остаются без значений и объект нельзя использовать до инициализации всех полей. Когда структура содержит ссылочный тип в качестве члена, конструктор по умолчанию члена должен вызываться явно, в противном случае член останется без значений и структура не сможет использоваться (возникнет ошибка компилятора). В отличие от классов структуры не поддерживают наследование. Структура не может быть унаследованной от другой структуры или класса и не может быть основой для других классов. Однако структуры наследуют от базового класса Object. Структуры могут реализовывать интерфейсы; этот механизм полностью аналогичен реализации интерфейсов для классов. Класс нельзя объявить с помощью ключевого слова struct.
Пример использования код структуры «CoOrds». В этом примере демонстрируется инициализация struct с помощью конструктора по умолчанию и с помощью конструктора с параметрами:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { public struct CoOrds { public int x, y;
public CoOrds(int p1, int p2) { x = p1; y = p2; } } // Инициализируем и декларируем объекты структуры class TestCoOrds { static void Main() { // Инициализируем CoOrds coords1; coords1.x = 10; coords1.y = 20; CoOrds coords2 = new CoOrds(10, 10);
// Выводим результат Console.Write("CoOrds 1: "); Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);
Console.Write("CoOrds 2: "); Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y);
// Keep the console window open in debug mode. Console.WriteLine("Для продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } /* Выведет: * CoOrds 1: x = 10, y = 20 * CoOrds 2: x = 10, y = 10 * Для продолжения нажмите любую клавишу... */
В коде выше описаны оба случая использования инициализации члена структуры. С new и без. Понятие «Объект» Понятие «Объект»
Понятие «Объект»
Определение класса или структуры подобно чертежу, на котором указаны действия, выполняемые типом. В сущности, объект является блоком памяти, выделенной и настроенной в соответствии с чертежом. Программа может создать множество объектов одного класса. Объекты также называют экземплярами. Они могут храниться либо в именованной переменной, либо в массиве или коллекции. Клиентский код — это код, использующий эти переменные для вызова методов и доступа к открытым свойствам объекта. В объектно-ориентированном языке, таком как C#, стандартная программа состоит из нескольких динамически взаимодействующих объектов (поведение статических типов отличается от описанного здесь поведения).
|
||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 491; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.135.214 (0.009 с.) |