Разделы презентаций


НЕЯВНІ ТИПИ, АНОНІМНІ ТИПИ ТА ТИП dynamic

Неявний тип var Починаючи з Visual C# 3.0, змінні, оголошені в методі, можуть бути неявного типу var. За допомогою модифікатора var можна перекласти на компілятор призначення типу змінній у відповідності до виразу

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

Слайд 1НЕЯВНІ ТИПИ, АНОНІМНІ ТИПИ ТА ТИП dynamic
VI
Порівняльний аналіз мов C++

та C#
ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
НЕЯВНІ ТИПИ, АНОНІМНІ ТИПИ ТА ТИП dynamic VIПорівняльний аналіз мов C++ та C#ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Слайд 2Неявний тип var
Починаючи з Visual C# 3.0, змінні, оголошені в

методі, можуть бути неявного типу var. За допомогою модифікатора var

можна перекласти на компілятор призначення типу змінній у відповідності до виразу ініціалізації.
var i = 23; // int i = 23;
var s = "Hello"; // string s = "Hello";

Массиви можуть бути оголошені наступним чином:
var a = new[] { 1, 2, 3, 4 }; // int[]
var b = new[] { "hello", null, "world" }; // string[]

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ Омельчук Л. Л.

Неявний тип var	Починаючи з Visual C# 3.0, змінні, оголошені в методі, можуть бути неявного типу var. За

Слайд 3ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
var може бути використаний лише для оголошення

та ініціалізації (в одному виразі) локальної змінної. Змінна не може бути ініціалізована як null, т.я. він не дозволяє визначити тип змінної. Проте, змінна може бути ініціалізована виразом, який може повернути null, головне, щоб вираз мав тип.
var не може бути використане для атрибутів класа
змінні, визначені за допомогою var, не можуть бути використані
в їх власних виразах ініціалізації
( например var v = v++ // помилка компіляції).

Неявний тип var

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.var може бути використаний

Слайд 4ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
Анонімні типи
Анонімні типи являють собою зручний спосіб

інкапсуляції набора властивостей лише для читання в єдиний об’єкт без необхідності спочатку явно визначити його тип. Ім’я типу створюється компілятором і до нього немає доступу на рівні коду. Тип властивостей визначається компілятором.
var v = new { Amount = 123, Message = "Hello" };

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.Анонімні типи	Анонімні типи являють

Слайд 5ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
Анонімний тип є класом, який містить одну

чи більше відкритих властивостейлие для читання. Ніякі інші члени класу, такі як події чи методи не допускаються.
Потрібно вказати ім’я властивості перед виразом ініціалізації, за виключенням ситеації описаної нижче.
Якщо ви не вказали ім’я властивосты для анонімного типу, то компілятор призначить ім’я за іменем змінної, поля чи властивості, які використовувалися для ініціалізації.
Анонімні типи обмежені локальною областю вилимості.

Анонімні типи

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.	Анонімний тип є класом,

Слайд 6ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
Тип dynamic 
В Visual C# 2010 з’явився новий

тип — dynamic. Це статичний тип, але об’єкт типу dynamic обходить перевірку статичного типу. В більшості випадків він функціонує, як тип object. Під час компіляції вважається, що елементи з типом dynamic підтримують довільні операції. Тому розробнику не потрібно слідкувати за тим, звідки об’єкт отримує своє значення. Але, якщо код недійсний, під час виконання перехоплюються помилки.

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.Тип dynamic  	В Visual

Слайд 7ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
Наприклад, якщо у метода exampleMethod1 екземпляра в наступному коді

є лише один параметр, компілятор визняає, що перший виклик метода (ec.exampleMethod1(10, 4)) є недопустимим, оскільки він містить два аргумента. Такий виклик приводить до помилки компілятора. Другий виклик метода dynamic_ec.exampleMethod1(10, 4) не перевіряється компілятором, оскільки тип dynamic_ec є типом dynamic. Тому помилка компілятора не виникає. Проте, помилка не залишається непоміченою і не приводить до невизначеного результату. Вона перехоплюється під час виконання і викликає виключення.

Тип dynamic 

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.	Наприклад, якщо у метода exampleMethod1 екземпляра

Слайд 8ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
class ExampleClass {

public ExampleClass() { }
public ExampleClass(int v) { }
public void exampleMethod1(int i) { }
public void exampleMethod2(string str) { } }
public class ThrowTestB {
static void Main(string[] args)
{
ExampleClass ec = new ExampleClass();
// викликає помилку компілятора (2 параметри)
                ec.exampleMethod1 (10, 4);
dynamic dynamic_ec = new ExampleClass();
//не викликає помилки компіляції, виключення під час виконання
dynamic_ec.exampleMethod1(10, 4);
// Наступні рядки не викликають помилки компілятора
dynamic_ec.someMethod("some argument", 7, null);
dynamic_ec.nonexistentMethod();
} }
ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л. class ExampleClass {

Слайд 9ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
dynamic може відображатися безпоссередньо чи як компонента зконструйованого

типу в наступних ситуаціях:
в оголошеннях в якості типу властивості, поля, індексатора, параметра, повертаємого значення, локальної змінної чи обмеження типу. 

Тип dynamic 

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.	dynamic може відображатися безпоссередньо чи

Слайд 10ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
class ExampleClass
{

static dynamic field; // Динамічне поле.
dynamic prop { get; set; } // Динамічна властивість
// Динамічне повертаєме значення
public dynamic exampleMethod(dynamic d)
{
dynamic local = "Local variable"; // Динамічна локальна змінна
int two = 2;
if (d is int)
{
return local;
}
else
{
return two;
}
}
}
ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л. class ExampleClass

Слайд 11ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
В преобразованиях явного типа в качестве типа

целевого объекта преобразования.

Тип dynamic 

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.В преобразованиях явного типа

Слайд 12ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
public class ThrowTestB
{

static void convertToDynamic()
{
dynamic d;
int i = 20;
d = (dynamic)i;
Console.WriteLine(d);
string s = "Рядок";
d = (dynamic)s;
Console.WriteLine(d);

DateTime dt = DateTime.Today;
d = (dynamic)dt;
Console.WriteLine(d);
}
static void Main(string[] args)
{
convertToDynamic();
Console.ReadLine();
}
}
ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л. public class ThrowTestB

Слайд 13ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.
в довільному контексті, де типи служать в

якості значень, наприклад як типи з правої сторони оператора is чи as, чи як аргумент в typeof Например, dynamic можно использовать в следующих выражениях.
int i = 8;
dynamic d;

if (someVar is dynamic) { }

d = i as dynamic;

Console.WriteLine(typeof(List));

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.в довільному контексті, де

Слайд 14ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ

Омельчук Л. Л.

ПРОГРАМУВАННЯ 2 курс, ф-т КІБЕРНЕТИКИ        Омельчук Л. Л.

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика