игра брюс 2048
Главная / Программирование / Программирование на языке высокого уровня C# / Тест 10

Программирование на языке высокого уровня C# - тест 10

Упражнение 1:
Номер 1
Выберите все правильные утверждения

Ответ:

 (1) делегат может хранить ссылки на несколько методов и вызывать их поочередно 

 (2) сигнатуры всех методов, хранящихся в делегате, должны совпадать 

 (3) объявление делегата можно размещать только непосредственно в пространстве имен 

 (4) в делегат можно добавлять только статические методы класса 


Номер 2
Выберите все правильные утверждения

Ответ:

 (1) объявление делегата можно размещать непосредственно в пространстве имен 

 (2) при вызове экземпляра делегата вызываются все заданные в нем методы 

 (3) в делегат можно добавлять только статические методы класса 

 (4) параметры в делегат можно передавать только по значению 


Номер 3
Выберите все правильные утверждения

Ответ:

 (1) объявление делегата можно размещать внутри класса 

 (2) добавление метода в список делегата выполняется с помощью метода Combine 

 (3) делегат может хранить ссылку только на один метод 

 (4) возвращаемый тип делегата может быть только void 


Упражнение 2:
Номер 1
Выберите все правильные утверждения

Ответ:

 (1) добавление метода в список делегата выполняется с помощью перегруженной операции сложения 

 (2) в делегат можно добавлять как статические, так и обычные методы класса 

 (3) объявление делегата можно размещать только непосредственно в пространстве имен 

 (4) методы, записываемые в делегат, не должны вызывать генерацию исключений 


Номер 2
Выберите все правильные утверждения

Ответ:

 (1) делегат может хранить ссылки на несколько методов и вызывать их поочередно 

 (2) каждому методу в списке делегата при вызове передается один и тот же набор параметров 

 (3) объявление делегата можно размещать только непосредственно в пространстве имен 

 (4) параметры в делегат можно передавать только по значению 


Номер 3
Выберите все правильные утверждения

Ответ:

 (1) сигнатуры всех методов, хранящихся в делегате, должны совпадать 

 (2) объявление делегата можно размещать непосредственно в пространстве имен 

 (3) каждому методу в списке делегата при вызове передается один и тот же набор параметров 

 (4) возвращаемый тип делегата может быть только void 


Упражнение 3:
Номер 1
Выберите все правильные утверждения

Ответ:

 (1) объявление делегата можно размещать внутри класса 

 (2) при вызове экземпляра делегата вызываются все заданные в нем методы 

 (3) добавление метода в список делегата выполняется с помощью перегруженной операции сложения 

 (4) в делегат можно добавлять только нестатические методы класса 


Номер 2
Выберите все правильные утверждения

Ответ:

 (1) сигнатуры всех методов, хранящихся в делегате, должны совпадать 

 (2) в делегат можно добавлять как статические, так и обычные методы класса 

 (3) каждому методу в списке делегата при вызове передается один и тот же набор параметров 

 (4) параметры в делегат можно передавать только по значению 


Номер 3
Выберите правильное утверждение

Ответ:

 (1) объявление делегата можно размещать внутри класса 

 (2) делегат может хранить ссылку только на один метод 

 (3) параметры в делегат можно передавать только по значению 

 (4) возвращаемый тип делегата может быть только void 


Упражнение 4:
Номер 1
Выберите правильное утверждение

Ответ:

 (1) добавление метода в список делегата выполняется с помощью перегруженной операции сложения 

 (2) объявление делегата можно размещать только внутри класса 

 (3) в делегат можно добавлять только нестатические методы класса 

 (4) методы, записываемые в делегат, не должны вызывать генерацию исключений 


Номер 2
Выберите все правильные утверждения

Ответ:

 (1) каждому методу в списке делегата при вызове передается один и тот же набор параметров 

 (2) объявление делегата можно размещать только непосредственно в пространстве имен 

 (3) параметры в делегат можно передавать только по значению 

 (4) возвращаемый тип делегата может быть только void 


Номер 3
Выберите все правильные утверждения

Ответ:

 (1) объявление делегата можно размещать непосредственно в пространстве имен 

 (2) в делегат можно добавлять как статические, так и обычные методы класса 

 (3) параметры в делегат можно передавать только по значению 

 (4) методы, записываемые в делегат, не должны вызывать генерацию исключений 


Упражнение 5:
Номер 1
Что произойдет, если вызвать делегат, не содержащий ни одного метода?

Ответ:

 (1) будет выброшено исключение System.NullReferenceException 

 (2) будет выброшено исключение System.NoMethodsException 

 (3) ничего не произойдет (управление будет передано следующему оператору) 

 (4) программа аварийно завершится 


Номер 2
Что происходит при вызове экземпляра делегата?

Ответ:

 (1) поочередно вызываются все заданные в делегате методы 

 (2) вызывается первый метод, заданный в делегате 

 (3) формируется список методов, записываемых в делегат 

 (4) к делегату добавляется очередной метод 


Номер 3
Какие операции можно выполнять с делегатами?

Ответ:

 (1) простое присваивание 

 (2) сложное присваивание 

 (3) сравнение на равенство и неравенство 

 (4) сложение с константой 


Упражнение 6:
Номер 1
Какие операции можно выполнять с делегатами?

Ответ:

 (1) простое присваивание 

 (2) сложение 

 (3) вычитание 

 (4) умножение 


Номер 2
Какие операции можно выполнять с делегатами?

Ответ:

 (1) сложное присваивание 

 (2) умножение 

 (3) деление 

 (4) сравнение на больше-меньше 


Номер 3
Какие операции можно выполнять с делегатами?

Ответ:

 (1) сравнение на равенство и неравенство 

 (2) сложение с константой 

 (3) сравнение на больше-меньше 

 (4) логическое сложение 


Упражнение 7:
Номер 1
Какие операции можно выполнять с делегатами?

Ответ:

 (1) присваивание 

 (2) сравнение на равенство и неравенство 

 (3) сложение 

 (4) вычитание 


Номер 2
Связь типа "источник — наблюдатель" устанавливается:

Ответ:

 (1) во время выполнения программы для каждого объекта по отдельности 

 (2) во время выполнения программы для каждого класса 

 (3) во время компиляции программы для каждого класса 

 (4) во время компиляции программы для каждого объекта по отдельности 


Номер 3
Что представляет собой регистрация делегата?

Ответ:

 (1) Передача делегата в метод в качестве параметра 

 (2) В экземпляр делегата заносятся методы объектов-наблюдателей 

 (3) Объявление экземпляра делегата 


Упражнение 8:
Номер 1
 Дан фрагмент кода:
 
public event DiskChangeHandler OnDiskChange; 

public class DiskChangeEventArgs : EventArgs { 
 public int Sequence; 
 public string Message; 

 public DiskChangeEventArgs(int sequence, string message) { 
   Sequence = sequence; 
   Message = message; 
 } 
} 

// запись файла на несколько дискет; когда дискета заполнена, 
// возникает событие – подсказка вставить следующую дискету 
public void WriteToFloppy() { 

 // цикл записи, здесь подсказка вставить следующую дискету 
 OnDiskChange(null, new DiskChangeEventArgs(2, "Please insert next disk")); 
}  
   
Для передачи информации подписчику использован пользовательский класс DiskChangeEventArgs. Какое из описаний делегата подходит для приведенного кода?  
 

Ответ:

 (1) public delegate void DiskChangeHandler(object sender, DiskChangeEventArgs e); 

 (2) public delegate void OnDiskChange(object sender, EventArgs e); 

 (3) public delegate void DiskChangeHandler(object sender, event OnDiskChange); 

 (4) public delegate void OnDiskChange(object sender, DiskChangeEventArgs e); 


Номер 2
Дан фрагмент кода:
 
public class Publisher 
{
 public event EventHandler OnPublish;

 public void DoPublish() {
   OnPublish(this, null);
 }
}  
 
 Что произойдет, если метод DoPublish() инициирует событие OnPublish, и при этом не будет ни одного подписчика этого события? 
 

Ответ:

 (1) Будет выброшено исключение ApplicationException 

 (2) Будет выброшено исключение NoEventSubscribersException 

 (3) Событие будет инициировано, и система его обработает 

 (4) Будет выброшено исключение NullReferenceException 

 (5) Событие будет инициировано, но поскольку подписчиков нет, то никакого эффекта это не вызовет 


Номер 3
Какое из приведенных утверждений о событиях в C# истинно?

Ответ:

 (1) в событиях можно передавать контекстуальную информацию 

 (2) события инициализируются в конструкторе 

 (3) событие само определяет момент своего возникновения 

 (4) на событие может подписаться только один подписчик 


Упражнение 9:
Номер 1
 Дан фрагмент кода:
 
public class Log {

 private string myLogFileName;

 public delegate void LogFileMissing(object sender, EventArgs e);
 public event LogFileMissing OnLogFileMissing;

 public string LogFilename {
   get { return myLogFileName; }
   set { myLogFileName = value; }
 }

 public bool LogItem(string item) {
   if (!System.IO.File.Exists(myLogFileName)) {
     // инициирование события, если файл не найден
     (КОД)
     return false;
   }
   // выполнение логирования
   // возврат
   return true;
 }
}  
   
  Что необходимо вставить на место (КОД) для инициирования события OnLogFileMissing?  
 

Ответ:

 (1) OnLogFileMissing(); 

 (2) return new OnLogFileMissing(this, null); 

 (3) throw new OnLogFileMissing(); 

 (4) OnLogFileMissing(this, null); 


Номер 2
Дан фрагмент кода:
 
public void CalcLCD(long number1, long number2, ref long LCD) {
 // вычисление наименьшего общего делителя
}

public delegate void CalcLCDStart(long number1, long number2, ref long LCD);  
…
long lcd = 0;
CalcLCDStart dlgLCD = new CalcLCDStart(CalcLCD);

Какой фрагмент кода вызывает асинхронно CalcLCD для чисел 15 и 34 и возвращает вычисленное значение по ссылке в переменную lcd?  
 

Ответ:

 (1) IAsyncResult iar = dlgLCD.BeginInvoke(15, 34, ref lcd, null, null); dlgLCD.EndInvoke(ref lcd, iar);  

 (2) IAsyncResult iar = dlgLCD.BeginInvoke(15, 34, lcd, null, null); dlgLCD.EndInvoke(ref lcd, iar);  

 (3) IAsyncResult iar = dlgLCD.BeginInvoke(15, 34, null, null); dlgLCD.EndInvoke(ref lcd, iar);  

 (4) IAsyncResult iar = dlgLCD.BeginInvoke(15, 34, ref lcd, null, null); dlgLCD.EndInvoke(iar);  


Номер 3
 Дан фрагмент кода:
 
public class RunStuff {

 public void DoSomething() {
   // что-то сделать
 }

 public void DoAsync(int quantity) {
   Thread myThread;
   (КОД)
   myThread = new Thread(myStart);
   // сделать то, что требуется
 }
}
 }  
   
Какая строка корректно инициализирует объект myStart класса ThreadStart в месте, обозначенном (КОД)?
 

Ответ:

 (1) ThreadStart myStart = new ThreadStart(); 

 (2) ThreadStart myStart = new ThreadStart(DoSomething()); 

 (3) ThreadStart myStart = new ThreadStart(DoSomething); 

 (4) ThreadStart myStart = new ThreadStart(myThread); 


Упражнение 10:
Номер 1
 Дан фрагмент кода:
 
public event DiskChangeHandler OnDiskChange; 

public class DiskChangeEventArgs : EventArgs { 
 public int Sequence; 
 public string Message; 

 public DiskChangeEventArgs(int sequence, string message) { 
   Sequence = sequence; 
   Message = message; 
 } 
} 

// запись файла на несколько дискет; когда дискета заполнена, 
// возникает событие – подсказка вставить следующую дискету 
public void WriteToFloppy() { 

 // цикл записи, здесь подсказка вставить следующую дискету 
 OnDiskChange(null, new DiskChangeEventArgs(2, "Please insert next disk")); 
}  
   
Для передачи информации подписчику использован пользовательский класс DiskChangeEventArgs.Какое из описаний делегата подходит для приведенного кода? 
 

Ответ:

 (1) public delegate void DiskChangeHandler(object sender, DiskChangeEventArgs e); 

 (2) public delegate void OnDiskChange(object, EventArgs); 

 (3) public delegate void DiskChangeHandler(object sender, event OnDiskChange); 

 (4) public delegate void DiskChangeHandler(object sender, event EventArgs); 


Номер 2
 Дан фрагмент кода:
 
public class Log {

 private string myLogFileName;

 public delegate void LogFileMissing(object sender, EventArgs e);
 public event LogFileMissing OnLogFileMissing;

 public string LogFilename {
   get { return myLogFileName; }
   set { myLogFileName = value; }
 }

 public bool LogItem(string item) {
   if (!System.IO.File.Exists(myLogFileName)) {
     // инициирование события, если файл не найден
     (КОД)
     return false;
   }
   // выполнение логирования
   // возврат
   return true;
 }
}  
   
Что необходимо вставить на место (КОД) для инициирования события OnLogFileMissing?
 

Ответ:

 (1) return OnLogFileMissing(this, null); 

 (2) throw OnLogFileMissing(); 

 (3) OnLogFileMissing(this, null); 

 (4) raiseevent OnLogFileMissing(this, null); 


Номер 3
 Дан фрагмент кода:
 
public class Run {

 public void DoStuff() {
   // что-то сделать
 }

 public void DoAsync(int a) {
   Thread myThread;
   (КОД)
   myThread = new Thread(myStart);
   // сделать то, что требуется
 }
}
 }  
   
Какая строка корректно инициализирует объект myStart класса ThreadStart в месте, обозначенном (КОД)?
 

Ответ:

 (1) ThreadStart myStart = new ThreadStart(); 

 (2) ThreadStart myStart = new ThreadStart(DoStuff); 

 (3) ThreadStart myStart = new ThreadStart(myThread); 

 (4) ThreadStart myStart = new ThreadStart(this); 


Номер 4
 Дан фрагмент кода:
 
public void Calc (long number1, long number2, ref long LCD) {
 // вычисление наименьшего общего делителя
}

public delegate void CalcStart(long number1, long number2, ref long LCD);  
…
long lcd = 0;
CalcStart dlg = new CalcStart(Calc);
   
Какой фрагмент кода вызывает асинхронно Calc для чисел 28 и 75 и возвращает вычисленное значение по ссылке в переменную lcd?  
 

Ответ:

 (1) IAsyncResult iar = dlg.BeginInvoke(28, 75, ref lcd, null, null); dlg.EndInvoke(ref lcd, iar);  

 (2) IAsyncResult iar = dlg.BeginInvoke(28, 75, lcd); dlg.EndInvoke(ref lcd, iar);  

 (3) IAsyncResult iar = dlg.BeginInvoke(28, 75, ref lcd, null, null); dlg.EndInvoke();  

 (4) IAsyncResult iar = dlg.BeginInvoke(28, 75, null, null); dlg.EndInvoke(ref lcd, iar);  




Главная / Программирование / Программирование на языке высокого уровня C# / Тест 10