- •Обзор
- •Цели
- •Поля в классах - пример
- •Свойства (Properties). Методы Get и Set
- •Свойства - объяснение
- •Типы свойств
- •Больше о свойствах
- •Индексаторы (Indexers)
- •Индексаторы - пример
- •Правила объявления индексаторов
- •Индексаторы и массивы
- •Индексаторы и массивы 2
- •Индексаторы и массивы 3
- •Индексаторы и массивы 4
- •Множественные
- •Делегаты (Delegates)
- •Определение
- •Присвоение (Instantiating) Делегатов
- •Использование делегатов
- •События
- •Определение событий
- •Подписка (Subscribing) на событие
- •Оповещение о событии
- •Резюме
Расширенные концепции C# - II
Обзор
Глава 7 – Расширенные концепции C# - I
Сборка состоит из:
Набора типов и ресурсов, формирующих логический функциональный блок.
Декларация (manifest) содержит информацию, описывающую данную сборку.
Мы можем разместить классы из одного пространства имен в разные сборки, а также классы из различных пространств имен в одну сборку.
Сборки бывают двух типов: Закрытые(Private) и Разделяемые(Shared)
Номер версии сборки обозначается четырехзначным числом в следующем формате:
<Старший номер версии> . < Младший номер версии > .<Редакция> . <Выпуск>
Пространство имен System.Reflection содержит около 40 классов и интерфейсов, которые могут быть использованы для получения информации об объекте.
Наборы (Collections) – это типы данных, которые обеспечивают особый способ хранения и групповой обработки данных.
Исключения (Exceptions) генерируются во время выполнения программы, при возникновении ошибки.
Блоки try и catch помогают обрабатывать сгенерированные исключения.
Использование оператора Throw, позволяет программно сгенерировать исключения.
Инструкции, содержащие в блоке Finally выполняются независимо от того было исключение или нет.
Цели
Объяснить что такое Свойства (Properties)
Применение Индексаторов (Indexers)
Применение делегатов (Delegates)
Определять и генерировать События (Events)
Поля в классах - пример
Свойства(Properties) - средство защиты полей в
классах
using System; class Student
{
public string sName; public string sId;
}
class Test
{
public static void Main()
{
Student studOne = new Student(); Console.WriteLine("Enter Student Name"); studOne.sName = Console.ReadLine(); Console.WriteLine("\nEnter Student Id"); studOne.sId = Console.ReadLine();
Console.WriteLine("Student name is {0} and Student Id is {1}", studOne.sName, studOne.sId);
}
}
Свойства (Properties). Методы Get и Set
…
Employee emp emp.Set(“Design”)
String Department = emp.Get()
..
Каждый раз когда нам необходимо получить доступ к полю, необходимо использовать методы set и get
Свойства (Properties) in C#
using System; |
|
|
|
|
|
|
|
|
|
|
|
|
|
public class Student |
|
|
|
|
|
|
{ |
|
|
|
|
|
|
public string sName; |
//Field |
|
|
|
||
private string internal_sId;//Field |
|
|
|
|||
public string sId |
|
//Property |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
get |
|
|
|
|
|
|
|
|
class Test |
|
|
|
|
{ |
|
|
|
|
|
|
return internal_sId; |
|
{ |
|
|
|
|
} |
|
|
static |
|
void Main() |
|
|
|
|
{ |
|
|
|
set |
|
|
Student one = new Student(); |
|||
{ |
|
|
one.sName = "Sam"; |
|||
internal_sId = value; |
|
one.sId = "St423"; |
||||
} |
|
|
Console.WriteLine("The Name of the Student |
|||
} |
|
|
is {0} and his Id is {1}", one.sName, one.sId); |
|||
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
Свойства - объяснение
Эта строка кода неявно вызывает метод set
Эта строка неявно вызывает метод get
Типы свойств
Свойство Read / Write
Свойство Read – только для чтения
Свойство Write – только для записи
Больше о свойствах
Свойства это логические поля
Свойства являются расширениями полей
В отличие от полей, свойствам непосредственно не соответствуют какие-либо области памяти
В отличие от методов свойства не используют скобки ()
Индексаторы (Indexers)
Индексаторы являются простыми компонентами языка C#
Мы можем создать индексатор для массива и обращаться к элементам массива напрямую, указывая индекс для объекта класса
Позволяет проиндексировать объект тем же способом, что и массив
Возможно обеспечить доступ к членам класса схожим с доступом к элементам массива способом
Индексаторы - пример
class IndexerExample
{
public string[] stringList=new string[10]; public string this[int index]
{
get |
|
|
|
|
|
{ |
class Test |
|
|
||
return stringList[index]; |
{ |
|
|
|
|
} |
static void Main() |
||||
set |
{ |
IndexerExample indexTest = new |
|||
|
|||||
{ |
IndexerExample(); |
||||
stringList[index] = value.ToString(); |
|
indexTest.stringList[1]="Sam"; |
|||
} |
|
indexTest[2]="Tom"; |
|||
} |
|
System.Console.WriteLine("indexTest[1] is |
|||
} |
{0}\nindexTest[2] is {1}", indexTest[1], |
||||
|
|
|
|
|
|
|
indexTest[2]); |
||||
|
} |
|
|
|
|
|
} |
|
|
|
|