Главная / Программирование /
Введение в программирование / Тест 18
Введение в программирование - тест 18
Упражнение 1:
Номер 1
Отметьте, какие модификаторы можно указывать при объявлении делегата:
Ответ:
 (1) abstract
 
 (2) sealed
 
 (3) static
 
 (4) private
 
 (5) internal
 
 (6) unsafe
 
Номер 2
Отметьте, какие модификаторы можно указывать при объявлении делегата:
Ответ:
 (1) abstract
 
 (2) protected
 
 (3) sealed
 
 (4) static
 
Номер 3
Отметьте, какие модификаторы можно указывать при объявлении делегата:
Ответ:
 (1) new
 
 (2) abstract
 
 (3) public
 
Упражнение 2:
Номер 1
Определите код, не содержащий ошибок и объявляющий делегат MyDelegate
для последующего вызова не статического метода F_I
из класса CA
:
Ответ:
 (1) delegate static void MyDelegate();
 
 (2) delegate void MyDelegate();
 
 (3) delegate sealed void MyDelegate();
 
Номер 2
Определите код, не содержащий ошибок и использующий делегат MyDelegate
для вызова не статического метода F_I
из класса CA
:
Ответ:
 (1) CA var1= new CA();
MyDelegate M1 = MyDelegate(var1.F_I); M1(); 
 (2) CA var1= new CA();
MyDelegate M1 = new MyDelegate(CA.F_I); M1(); 
 (3) CA var1= new CA();
MyDelegate M1 = new MyDelegate(var1.F_I); M1(); 
Номер 3
Определите код, не содержащий ошибок и использующий делегат MyDelegate
для вызова статического метода F_Static
из класса CA
:
Ответ:
 (1) CA var1= new CA();
MyDelegate F_d = MyDelegate(var1.F_Static); F_d(); 
 (2) CA var1= new CA();
MyDelegate F_d = new MyDelegate(CA.F_Static); F_d(); 
 (3) CA var1= new CA();
MyDelegate F_d = new MyDelegate(var1.F_Static); F_d(); 
Упражнение 3:
Номер 1
Определите код, не содержащий ошибок и корректно объявляющий импортируемую функцию из DLL-библиотеки myDll.dll:
Ответ:
 (1) [DllImport("myDll.dll", EntryPoint="M1")]
static extern int M2(int i1, string s1); 
 (2) [DllImport("myDll.dll", EntryPoint="M1")]
static extern int M1(int i1, string s1); 
 (3) [DllImport(EntryPoint="M1","myDll.dll")]
static extern int M1(int i1, string s1); 
Номер 2
Класс DllImportAttribute позволяет при объявлении импортируемой функции из DLL-библиотеки:
Ответ:
 (1) установить используемый набор символов 
 (2) установить тип возвращаемого значения 
 (3) установить тип каждого параметра функции 
Номер 3
При выполнении на С# кода unsafe { Point pt = new Point(); int* p = &pt.x;}
следует:
Ответ:
 (1) обязательно применить оператор fixed
 
 (2) установить опцию компиляции, разрешающую выполнение небезопасного кода 
 (3) установить опцию компиляции, разрешающую выполнение небезопасного кода, и обязательно применить оператор fixed
 
Упражнение 4:
Номер 1
При объявлении в C# делегата для статического метода код объявления:
Ответ:
 (1) обязательно должен содержать ключевое слово static
 
 (2) не должен содержать ключевое слово static
 
 (3) должен быть помечен как new
 
Номер 2
При объявлении в C# делегата для общедоступного метода код объявления:
Ответ:
 (1) обязательно должен содержать ключевое слово static
 
 (2) может содержать ключевое слово static
 
 (3) должен содержать ключевое слово public
 
 (4) может дополнительно быть помечен как new
 
Номер 3
При выполнении на С# кода unsafe {int *i2=&i1;}
:
Ответ:
 (1) следует обязательно применить оператор fixed
 
 (2) достаточно только установить опцию компиляции, разрешающую выполнение небезопасного кода 
 (3) установить опцию компиляции, разрешающую выполнение небезопасного кода, и обязательно применить оператор fixed
 
Упражнение 5:
Номер 1
Определите код на C#, не содержащий ошибок и использующий делегат для вызова не статического метода:
Ответ:
 (1) using System;
delegate void MyDelegate();
namespace MyDelegat1
{ class Class1
{ static void Main(string[] args) {
CA var1= new CA();
//Класс CA содержит не статический метод F_I
MyDelegate F_d = new MyDelegate(var1.F_I);
F_d();
} } } 
 (2) using System;
delegate void MyDelegate();
namespace MyDelegat1
{ class Class1
{ static void Main(string[] args) {
CA var1= new CA();
//Класс CA содержит не статический метод F_I
MyDelegate F_d = MyDelegate(var1.F_I);
F_d();
} } } 
 (3) using System;
delegate void MyDelegate();
namespace MyDelegat1
{ class Class1
{ static void Main(string[] args) {
CA var1= new CA();
//Класс CA содержит не статический метод F_I
MyDelegate F_d = new MyDelegate(CA.F_I);
F_d();
} } } 
Номер 2
Определите код на C#, не содержащий ошибок и использующий делегат для вызова статического метода:
Ответ:
 (1) using System;
delegate void MyDelegate();
namespace MyDelegat1
{ class Class1
{ static void Main(string[] args) {
CA var1= new CA();
//Класс CA содержит статический метод F_S
MyDelegate F_d = new MyDelegate(var1.F_S)
F_d()
} } } 
 (2) using System;
delegate void MyDelegate();
namespace MyDelegat1
{ class Class1
{ static void Main(string[] args) {
CA var1= new CA();
//Класс CA содержит статический метод F_S
MyDelegate F_d = MyDelegate(CA.F_S)
F_d()
} } } 
 (3) using System;
delegate void MyDelegate();
namespace MyDelegat1
{ class Class1
{ static void Main(string[] args) {
CA var1= new CA();
//Класс CA содержит статический метод F_S
MyDelegate F_d = new MyDelegate(CA.F_S)
F_d()
} } } 
Номер 3
При импорте функции из DLL-библиотеки атрибут DllImport позволяет:
Ответ:
 (1) указать имя DLL-библиотеки 
 (2) указать имя функции из DLL-библиотеки 
 (3) задать сразу список экспортируемых функций