🗊Презентация Общая система типов CTS

Нажмите для полного просмотра!
Общая система типов CTS, слайд №1Общая система типов CTS, слайд №2Общая система типов CTS, слайд №3Общая система типов CTS, слайд №4Общая система типов CTS, слайд №5Общая система типов CTS, слайд №6Общая система типов CTS, слайд №7Общая система типов CTS, слайд №8Общая система типов CTS, слайд №9Общая система типов CTS, слайд №10Общая система типов CTS, слайд №11Общая система типов CTS, слайд №12Общая система типов CTS, слайд №13Общая система типов CTS, слайд №14Общая система типов CTS, слайд №15Общая система типов CTS, слайд №16Общая система типов CTS, слайд №17Общая система типов CTS, слайд №18Общая система типов CTS, слайд №19Общая система типов CTS, слайд №20Общая система типов CTS, слайд №21Общая система типов CTS, слайд №22Общая система типов CTS, слайд №23

Вы можете ознакомиться и скачать презентацию на тему Общая система типов CTS. Доклад-сообщение содержит 23 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Общая система типов CTS
KtЛекция №3
Описание слайда:
Общая система типов CTS KtЛекция №3

Слайд 2





CTS (общая система типов) 
CTS (общая система типов) представляет собой формальную спецификацию, в которой описано то, как должны быть определены типы для того, чтобы они могли обслуживаться в CLR-среде.
Описание слайда:
CTS (общая система типов) CTS (общая система типов) представляет собой формальную спецификацию, в которой описано то, как должны быть определены типы для того, чтобы они могли обслуживаться в CLR-среде.

Слайд 3





Тип Объект
Все объекты косвенно происходят от единого базового класса, определенного в составе CTS. Этот базовый класс — System.Object.
Описание слайда:
Тип Объект Все объекты косвенно происходят от единого базового класса, определенного в составе CTS. Этот базовый класс — System.Object.

Слайд 4





Значимые и ссылочные типы
Концепция создания языка, где любая сущность является объектом, не нова. Если попытаться сложить два значения типа double, при этом реально выделять объекты в куче, то выделение памяти будет чрезвычайно неэффективно.
Описание слайда:
Значимые и ссылочные типы Концепция создания языка, где любая сущность является объектом, не нова. Если попытаться сложить два значения типа double, при этом реально выделять объекты в куче, то выделение памяти будет чрезвычайно неэффективно.

Слайд 5





Значимые типы
Для значимого типа используется прямая адресация, значение хранит собственно данные, и память для них отводится, как правило, в стеке.
Описание слайда:
Значимые типы Для значимого типа используется прямая адресация, значение хранит собственно данные, и память для них отводится, как правило, в стеке.

Слайд 6





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

Слайд 7





Иерархия типов
Описание слайда:
Иерархия типов

Слайд 8





Встроенные типы
Описание слайда:
Встроенные типы

Слайд 9





Встроенные типы
Описание слайда:
Встроенные типы

Слайд 10





Встроенные типы
Описание слайда:
Встроенные типы

Слайд 11





Встроенные типы
Описание слайда:
Встроенные типы

Слайд 12





Упаковка и распаковка
Как же эти различные категории типов обеспечивают более эффективную работу системы? 
Это делается с помощью упаковки (boxing). В простейшем случае при упаковке размерный тип преобразуется в ссылочный. В обратном случае ссылочный тип распаковывается (unbox) в размерный.
Описание слайда:
Упаковка и распаковка Как же эти различные категории типов обеспечивают более эффективную работу системы? Это делается с помощью упаковки (boxing). В простейшем случае при упаковке размерный тип преобразуется в ссылочный. В обратном случае ссылочный тип распаковывается (unbox) в размерный.

Слайд 13





Упаковка и распаковка
Объект лишь тогда является объектом, когда это необходимо.
int foo = 42; // Размерный тип.
object bar = foo; // Переменная foo упакована в bar.
А теперь выполним явное приведение типов, чтобы преобразовать bar обратно в размерный тип:
int foo = 42; // Размерный тип.
object bar = foo; // Переменная foo упакована в bar.
int foo2 = (int) bar; // Распаковка и приведение к типу int.
Описание слайда:
Упаковка и распаковка Объект лишь тогда является объектом, когда это необходимо. int foo = 42; // Размерный тип. object bar = foo; // Переменная foo упакована в bar. А теперь выполним явное приведение типов, чтобы преобразовать bar обратно в размерный тип: int foo = 42; // Размерный тип. object bar = foo; // Переменная foo упакована в bar. int foo2 = (int) bar; // Распаковка и приведение к типу int.

Слайд 14


Общая система типов CTS, слайд №14
Описание слайда:

Слайд 15


Общая система типов CTS, слайд №15
Описание слайда:

Слайд 16


Общая система типов CTS, слайд №16
Описание слайда:

Слайд 17


Общая система типов CTS, слайд №17
Описание слайда:

Слайд 18





Приведение типов – это преобразование значения одного типа в значение другого типа.
Приведение типов – это преобразование значения одного типа в значение другого типа.
Описание слайда:
Приведение типов – это преобразование значения одного типа в значение другого типа. Приведение типов – это преобразование значения одного типа в значение другого типа.

Слайд 19





Выделяют приведения типов:
Выделяют приведения типов:
явные (англ. explicit);
int num = 2147483647; 
long bigNum = num;
неявные (англ. implicit).
double x = 1234.7; 
int a; 
a = (int)x; // a = 1234
Описание слайда:
Выделяют приведения типов: Выделяют приведения типов: явные (англ. explicit); int num = 2147483647; long bigNum = num; неявные (англ. implicit). double x = 1234.7; int a; a = (int)x; // a = 1234

Слайд 20





class Employee { } 
class Employee { } 
class ContractEmployee : Employee { }
class CastExamplel
{
public static void Main () {
Employee e = new ContractEmployee(); } }
Этот код будет работать, поскольку всегда подразумевается восходящее приведение (upcast) производного класса к его базовому классу.
Описание слайда:
class Employee { }  class Employee { }  class ContractEmployee : Employee { } class CastExamplel { public static void Main () { Employee e = new ContractEmployee(); } } Этот код будет работать, поскольку всегда подразумевается восходящее приведение (upcast) производного класса к его базовому классу.

Слайд 21





А вот такой код недопустим, так как компилятор не предоставляет неявное нисходящее приведение (downcast).
А вот такой код недопустим, так как компилятор не предоставляет неявное нисходящее приведение (downcast).
…
class CastExample2 {
public static void Main ()
{
ContractEmployee ce = new Employee (); // He будет
// компилироваться.
} }
Описание слайда:
А вот такой код недопустим, так как компилятор не предоставляет неявное нисходящее приведение (downcast). А вот такой код недопустим, так как компилятор не предоставляет неявное нисходящее приведение (downcast). … class CastExample2 { public static void Main () { ContractEmployee ce = new Employee (); // He будет // компилироваться. } }

Слайд 22





Вы не сможете выполнить нисходящее приведение объекта типа Employee к объекту типа ContractEmployee, поскольку нет гарантии, что этот объект поддерживает интерфейс, определенный классом ContractEmployee. Поэтому в случае нисходящего приведения используется явное приведение:
Вы не сможете выполнить нисходящее приведение объекта типа Employee к объекту типа ContractEmployee, поскольку нет гарантии, что этот объект поддерживает интерфейс, определенный классом ContractEmployee. Поэтому в случае нисходящего приведения используется явное приведение:
...
class CastExampleS {
public static void Main ()
{// Нисходящее приведение не сработает.
ContractEmployee ce = (ContractEmployee)new Employee(); }}
 
Описание слайда:
Вы не сможете выполнить нисходящее приведение объекта типа Employee к объекту типа ContractEmployee, поскольку нет гарантии, что этот объект поддерживает интерфейс, определенный классом ContractEmployee. Поэтому в случае нисходящего приведения используется явное приведение: Вы не сможете выполнить нисходящее приведение объекта типа Employee к объекту типа ContractEmployee, поскольку нет гарантии, что этот объект поддерживает интерфейс, определенный классом ContractEmployee. Поэтому в случае нисходящего приведения используется явное приведение: ... class CastExampleS { public static void Main () {// Нисходящее приведение не сработает. ContractEmployee ce = (ContractEmployee)new Employee(); }}  

Слайд 23





А давайте обманем CTS путем явного приведения базового класса к производному:
А давайте обманем CTS путем явного приведения базового класса к производному:
… 
class CastExample4 {
public static void Main ()
 { Employee e = new Employee (); 
ContractEmployee с = (ContractEmployee)e; } }
Эта программа компилируется, но генерирует исключение периода выполнения.
Описание слайда:
А давайте обманем CTS путем явного приведения базового класса к производному: А давайте обманем CTS путем явного приведения базового класса к производному: …  class CastExample4 { public static void Main ()  { Employee e = new Employee (); ContractEmployee с = (ContractEmployee)e; } } Эта программа компилируется, но генерирует исключение периода выполнения.



Похожие презентации
Mypresentation.ru
Загрузить презентацию