- •Экзаменационный билет №1
- •1. Структура и принципы функционирования приложений на платформе .Net, библиотека компонентов и классов .Net Framework, исполнительная среде clr.
- •2. Интерфейсы. Стандартные интерфейсы .Net. Сравнение и клонирование объектов. Структуры. Делегаты. События.
- •3. Каков результат компиляции и выполнения приведенного ниже кода?
- •Экзаменационный билет №2
- •1. Основные понятия ооп - инкапсуляция, наследование, полиморфизм.
- •2. Отношение между объектами. Включения и коллекции.
- •3. Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №3
- •1. Класс Delegate. Логика использования делегатов. Неизменяемость делегатов.
- •2. Пространство имён – определение, примеры
- •3. Что будет выведено на экран в каждом из случаев, приведенных ниже:
- •Экзаменационный билет №4
- •1. Структура программы на c#. Константы. Переменные: описание, область действия, время жизни. Операции, приоритеты операций.Структура программы на c#.
- •2. Параллельные и Взаимосвязанные Вычисления (ccr). Где используется ccr?
- •3. Что будет выведено на экран в каждом из случаев, приведенных ниже:
- •Экзаменационный билет №5
- •1. Понятие полиморфизма
- •2. Перегрузка функций. Алгоритм выбора перегруженной функции.
- •3. Что будет выведено в консоли в результате выполнения следующего кода (и почему):
- •Экзаменационный билет №6
- •1. Конструкторы, их виды (преобразования, умолчания, копирования). Деструктор.
- •2. Обзор dss.
- •3. Какой метод выберет компилятор?
- •Экзаменационный билет №7
- •1. Информационные члены класса и члены-методы.
- •2. Наследование классов. Синтаксис и общий смысл.
- •3. Какой метод выберет компилятор?
- •Экзаменационный билет №8
- •1. Массивы. Строки. Потоки и файлы.
- •2. Ccr.Итераторы.
- •3. Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №9
- •1. Пространство имён – определение, примеры.
- •2. Циклы for, while, do. Прерывание циклов.
- •3. Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №10
- •1. Сокрытие методов базового класса.
- •2.Операции в c# (привести примеры операций для логических типов, арифметических и т.Д.)
- •3. Найти неправильное(ые) описание(я) двумерного массива
- •Экзаменационный билет №11
- •1. Конструкторы. Ключевое слово this.
- •2.Особенности итераторов в ccr. Итераторы
- •3.Найти неправильное(ые) описание(я) одномерного массива
- •Экзаменационный билет №12
- •1.Clr (CommonLanguageRuntime) – определение, примеры задач clr, состав ядра.
- •2.Понятие инкапсуляции.
- •3.Каков результат компиляции и выполнения приведенного ниже кода?
- •Экзаменационный билет №13
- •1.Статические члены класса
- •2.Что такое полиморфизм? Пример полиморфизма.
- •3.Что будет выведено на экран при выполнении приведенного ниже кода?
- •Экзаменационный билет №14
- •1.Понятие класса. Доступ к членам класса.
- •2. Инкапсуляция. Понятие класса как абстрактного типа данных.
- •3.Как метод выберет компилятор?
- •Экзаменационный билет №15
- •1. Понятие события
- •2. Механизмы инкапсуляции в c#. Вложенные типы.
- •3. Каков результат компиляции и выполнения приведенного ниже кода?
- •Экзаменационный билет №16
- •1.Определение классов в с#. Ключевые слова internal, public, abstract
- •2.Потоковый ввод-вывод. Работа с файлами/каталогами
- •3. Какой метод выберет компилятор?
- •Экзаменационный билет №17
- •1. Интерфейсы
- •2.Параллельные и Взаимосвязанные Вычисления (ccr). Где используется ccr?
- •3.Что следует ожидать на экране?
- •Экзаменационный билет №18
- •1.Ссылочные типы и типы-значения
- •2.Класс Delegate. Логика использования делегатов. Неизменяемость делегатов.
- •3.Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №19
- •1.Clr (CommonLanguageRuntime) – определение, примеры задач clr, состав ядра
- •2.Зачем нужны частичные(partial) методы в c#?
- •3.Что будет выведено в консоли в результате выполнения следующего кода (и почему):
- •Экзаменационный билет №20
- •1.Простые типы. Примеры.
- •2.Ссылочный тип данных
- •3.Что будут выведено на экран в результате выполнения кода приведенного ниже?
- •Экзаменационный билет №21
- •1.Переменные. Объявление и инициализация
- •2.Наследование. Замещение методов. Проверка совместимости типов.
- •3.Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №22
- •1.Определение классов в с#. Ключевые слова internal, public, abstract
- •2.Библиотеки и типы, используемые при симуляции в Robotics
- •3.Что будет выведено на экран при выполнении приведенного ниже кода?
- •Экзаменационный билет №23
- •Экзаменационный билет №24
- •Экзаменационный билет №25
2.Операции в c# (привести примеры операций для логических типов, арифметических и т.Д.)
Операции, приоритеты операций. Для каждого определённого в C# типа существует собственный набор операций, определённых на множестве значений этого типа.
Общие характеристики используемых в C# операций представлены ниже:
Категории операций |
Операции |
Арифметические |
+ - * / % |
Логические (boolean и побитовые) |
& | ^ ! ~ && || |
Строковые (конкатенаторы) |
+ |
Increment, decrement |
++ -- |
Сдвига |
>> << |
Сравнения |
== != < > <= >= |
Присвоения |
= += -= *= /= %= &= |= ^= <<= >>= |
Member access |
. |
Индексации |
[] |
Cast (приведение типа) |
() |
Conditional (трёхоперандная) |
?: |
Delegate concatenation and removal |
+ - |
Создания и удаление объекта |
new/delete |
Type information |
is sizeof typeof |
Overflow exception control (управление исключениями) |
checked unchecked |
Indirection and Address (неуправляемый код) |
* -> [] & |
На основе элементарных (первичных) выражений с использованием операций и дополнительных разделителей в виде открывающихся и закрывающихся скобок формируются выражения более сложной структуры.
Приоритет операций:
Приоритет |
Операции |
1 |
() [] . (постфикс)++ (постфикс)-- new sizeof typeof unchecked |
2 |
! ~ (имя типа) +(унарный) -(унарный) ++(префикс) --(префикс) |
3 |
* / % |
4 |
+ - |
5 |
<< >> |
6 |
< > <= => is |
7 |
== != |
8 |
& |
9 |
^ |
10 |
| |
11 |
&& |
12 |
|| |
13 |
?: |
14 |
= += -= *= /= %= &= |= ^= <<= >>= |
3. Найти неправильное(ые) описание(я) двумерного массива
a) int [][]a;
b) int [,]b;
c) int [3,4]c;
d) int [][]f=new int [3][];
e) int [][]d=new int [3][4];
f) int [,]c = new int [3,4];
Ответ: Неправильные с, e
Экзаменационный билет №11
1. Конструкторы. Ключевое слово this.
Каждый раз, когда создается класс или структура, вызывается конструктор. Класс или структура может иметь несколько конструкторов, принимающих различные аргументы. Конструкторы позволяют программисту задавать значения по умолчанию, ограничивать число установок и писать код, который является гибким и удобным для чтения.
Если не предоставить конструктор для объекта, C# создаст конструктор по умолчанию, который создаст экземпляр объекта и задаст переменным-членам значения по умолчанию. Статические классы и структуры также могут иметь конструкторы.
Конструкторы — это методы классов, выполняемые при создании объекта заданного типа. Конструкторы имеют такое же имя, как и классы, и обычно инициализируют члены данных новых объектов.
В следующем примере класс Taxi определяется с помощью простого конструктора. После этого с помощью оператора new создается экземпляр класса. Конструктор Taxi вызывается оператором new сразу после выделения памяти для нового объекта.
public class Taxi { public bool isInitialized; public Taxi() { isInitialized = true; } } class TestTaxi { static void Main() { Taxi t = new Taxi(); Console.WriteLine(t.isInitialized); } }
Конструктор без параметров называется конструктором по умолчанию. Конструкторы по умолчанию вызываются при создании экземпляров объекта с помощью оператора new, при этом для оператора new не указываются аргументы.
Компилятор C# предоставляет классам без конструкторов открытый конструктор по умолчанию, чтобы обеспечить создание экземпляров класса, если класс не является статическим.
Чтобы не допустить создание экземпляров класса, можно сделать конструктор закрытым:
class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... }
Конструкторы для типов структур похожи на конструкторы классов, но structs не могут содержать явно указанный конструктор по умолчанию, поскольку такой конструктор автоматически предоставляется компилятором. Этот конструктор инициализирует все поля в struct их значениями по умолчанию. Однако конструктор по умолчанию вызывается только в том случае, если создается экземпляр struct при помощи оператора new. Например, следующий код использует конструктор по умолчанию для Int32 таким образом, чтобы гарантировать инициализацию целочисленного значения.
int i = new int(); Console.WriteLine(i);
Однако в следующем коде возникает ошибка компилятора, поскольку оператор new не используется и в коде совершается попытка использовать объект, который не был инициализирован.
int i; Console.WriteLine(i);
Также можно инициализировать или присваивать объекты, основанные на structs (включая все встроенные числовые типы), и затем использовать их, как показано в следующем примере.
int a = 44; // Initialize the value type... int b; b = 33; // Or assign it before using it. Console.WriteLine("{0}, {1}", a, b);
Поэтому вызов конструктора по умолчанию для типа значения не требуется.
Классы и structs могут определять конструкторы, использующие параметры. Конструкторы, использующие параметры, нужно вызывать с помощью операторов new или base. Классы и structs также могут определять несколько конструкторов; они не требуются для определения конструктора по умолчанию. Примеры.
public class Employee { public int salary; public Employee(int annualSalary) { salary = annualSalary; } public Employee(int weeklySalary, int numberOfWeeks) { salary = weeklySalary * numberOfWeeks; } }
Этот класс можно создать с помощью любого из следующих операторов:
Employee e1 = new Employee(30000); Employee e2 = new Employee(500, 52);
Конструктор может использовать ключевое слово base для вызова конструктора базового класса. Примеры.
public class Manager : Employee { public Manager(int annualSalary) : base(annualSalary) { //Add further instructions here. } }
В этом примере конструктор базового класса вызывается перед выполнением блока конструктора. Ключевое слово base можно использовать как с параметрами, так и без них. Любые параметры конструктора можно указывать для оператора base или в составе выражения.
Если конструктор базового класса не вызывается явным образом в производном классе при помощи ключевого слова base, то вызывается конструктор по умолчанию, если он существует. Это означает, что следующие объявления конструкторов действуют одинаково:
public Manager(int initialdata) { //Add further instructions here. } public Manager(int initialdata) : base() { //Add further instructions here. }
Если в базовом классе нет конструктора по умолчанию, производный класс должен сделать явный вызов базового конструктора при помощи ключевого слова base.
Конструктор может вызывать в том же самом объекте другой конструктор с помощью ключевого слова this. Как и base, ключевое слово this можно использовать с параметрами или без параметрами, а все параметры конструктора доступны в качестве параметров this или в составе выражения. Например, второй конструктор в предыдущем примере можно переписать с помощью this:
public Employee(int weeklySalary, int numberOfWeeks) : this(weeklySalary * numberOfWeeks){}
Использование ключевого слова this в предыдущем примере приводит к вызову этого конструктора:
public Employee(int annualSalary) { salary = annualSalary; }
Конструкторы могут быть отмечены модификаторами public (открытый), private (закрытый), protected (защищенный), internal (внутренний) или protectedinternal(защищенный внутренний). Эти модификаторы доступа определяют порядок доступа пользователей класса к конструкторам класса. Дополнительные сведения см. в разделе Модификаторы доступа.
Конструктор можно объявить статическим при помощи ключевого слова static. Статические конструкторы вызываются автоматически непосредственно перед доступом к статическим полям и обычно служат для инициализации членов статического класса.
Ключевое слово this. Ключевые слова — это предварительно определенные зарезервированные идентификаторы, имеющие специальные значения для компилятора. Их нельзя использовать в программе в качестве идентификаторов, если только они не содержат префикс @. Например, @if является допустимым идентификатором, но if таковым не является, поскольку if — это ключевое слово.
Ключевое слово this ссылается на текущий экземпляр класса, а также используется в качестве модификатора первого параметра метода расширения.Ниже перечислены наиболее частые способы использования this.
Для квалификации элементов, скрытых одинаковыми именами, например:
public Employee(string name, string alias) { // Use this to qualify the fields, name and alias: this.name = name; this.alias = alias; }
Для передачи другим методам объекта в качестве параметра, например:
CalcTax(this); Для объявления индексаторов, например:
public int this[int param] { get { return array[param]; } set { array[param] = value; } }
У статических функций-членов нет указателя this, так как они существуют только на уровне класса и не являются частями объектов. Использование ссылки на this в статическом методе является недопустимым.