Результаты прохождения теста C# основы пользователем Denis Orlov

Результат прохождения теста "C# основы" - Пройден

+105

  • Кто проходил: Denis Orlov
  • Дата прохождения: 14.08.2019
Какое значение будет занесено в переменную b
class Program 
{ 
   static void Main(string[] args) 
   { 
       Func<int> d; 
       d = () => 0; 
       d += () => 1; 
       d += () => 2; 
       int b = d(); 
   } 
} 
Ваши ответы
2
Объяснение:

Делегат возвращает значение, полученное при вызове последнего метода

Для инкапсуляции вы хотите определить автосвойство так, чтобы невозможно было вызвать сеттер за пределами класса, но геттер оставить доступным. В каком из заданных вариантов описано нужное свойство?
Ваши ответы
public int Value { get; private set; }
Выберите безошибочный код:
Ваши ответы
double i; int j; short k; 
i = j = k = 0; 
ushort u = 10; 
ushort s = ++u; 
Объяснение:

Допустимо использование "цепочки присваиваний" и преобразование типов в операциях присваивания при совместимых типах данных.
В выражениях значения типов sbyte и char преобразуются в int.
Если один из операндов имеет тип double, то результат выражения тоже будет double.

Что произойдет в результате выполнения следующего кода:
class Test  
{ 
   static void Main(string[] args)  
   { 
       char[] vowels = {'a','e','i','o','u'}; 
       for (int i = 1; i <= vowels.Length; i++) 
       Console.Write(vowels[i] + " "); 
   } 
} 
Ваши ответы
Код напечатает "e i o u", а дальше уже возникает ошибка времени выполнения
Объяснение:

Нумерация элементов массива начинается с 0. Для обхода всех символов массива необходимо организовать цикл таким образом:

Что напечатает следующий код:
class MyClass 
{ 
   static void Main() 
   { 
       int a = 1, b = 2; 
       Swap(a, b); 
       Console.WriteLine("a=" + a + ", b=" + b); 
       Console.ReadLine(); 
   } 
 
   private static void Swap(int a, int b) 
   { 
       int c = a; 
       a = b; 
       b = c; 
   } 
} 
Ваши ответы
a=1, b=2
Что будет выведено на консоль при выполнении этого кода:
using System; 
using System.Collections.ObjectModel; 
 
using ByteCollection1 = System.Collections.ObjectModel.Collection<byte>;  
 
namespace CollectionApplication  
{  
  class Program  
  {  
      class ByteCollection2 : Collection<byte> { }  
 
      static void Main(string[] args)  
      {  
          Console.WriteLine(typeof(ByteCollection1) == typeof(Collection<byte>));  
          Console.WriteLine(typeof(ByteCollection2) == typeof(Collection<byte>));  
      }  
  }  
} 
 
Ваши ответы
True
False
Объяснение:

class ByteCollection2 : Collection { } - это уже новый тип.
Поэтому typeof(ByteCollection2) возвращает результат отличный от typeof(Collection<T>)), скажем T = int.

Возможно ли иметь/создать статический индексатор в С#?
Ваши ответы
Нет
Среди перечисленных конструкций укажите объявление индексатора
Ваши ответы
string this [int i] {get {return “Name”;}}
Выберите верные утверждения на счет наследования в C#
Ваши ответы
Класс может наследовать только одну реализацию
Класс может наследовать сколько угодно интерфейсов
Какой будет результат компиляции и выполнения данного кода:
public static void Main(string[] args) 
{ 
   int k = 1;  
   Console.WriteLine(k++ + ++k); 
} 
Ваши ответы
4
Объяснение:

(k++ + ++k) :
1) k++=1 - результат выражения, но после k++ увеличивает значение k на 1, т.е. k=2. Таким образом имеем (1 + ++k), где k=2.
2) (1 + (2+1))=4

Какие изменения нужно сделать в классе, чтобы он компилировался
public class Foo { 
       private int[] a = new int[10]; 
       private Dictionary<string, int> b; 
       private int[] c = new int[100]; 
 
       public int this[int i] {        // 1 
           get { return a[i]; } 
           set { a[i] = value; } 
       } 
 
       public int this[string id] {    // 2 
           get { return b[id]; } 
           set { b[id] = value; } 
       } 
 
       public int this[int i, int j] { // 3 
           get { return c[i*10 + j]; } 
           set { c[i*10 + j] = value; } 
       } 
   } 
Ваши ответы
Ничего убирать не надо, в коде нет ошибок компиляции
Объяснение:

Индексаторы допускается перегружать по входным параметрам. Также допускается более одного входного параметра.

Какие действия необходимо и достаточно выполнить для того, чтобы программа компилировалась?
namespace Test 
{ 
   class TypeA 
   { 
       class TypeB:TypeA 
       { 
           public override void MethodA() { Console.WriteLine("TypeB"); } 
       } 
 
       public virtual void MethodA() { Console.WriteLine("TypeA"); } 
   } 
 
   class Prоgrаm  
   { 
       static void Main(string[] args) 
       { 
           TypeA a = new TypeA(); 
           TypeB b = new TypeB(); 
           a.MethodA(); 
           b.MethodA(); 
           Console.ReadLine(); 
       } 
   } 
} 
Ваши ответы
Изменить модификатор доступа класса TypeB на public
Изменить строчку "TypeB b = new TypeB();" на "TypeA.TypeB b = new TypeA.TypeB();"
Что напечатает данный код:
class Test { 
  static void increment(int p) 
  { 
    ++p; 
  } 
  static void Main( )  
  { 
    int x = 8; 
    increment(x); 
    Console.WriteLine(x++); 
  } 
} 
Ваши ответы
8
Объяснение:

Параметр x передается в метод по значению. Сначала произойдет вывод значения, а потом инкремент, так как в данном случае используется постфиксный оператор

Какие строки приведут к ошибке компилляции этого кода если он является частью метода?
int k = 1; 
 
switch (k) 
{ 
   case 0:                                 //1 
   case 1:  Console.WriteLine("Case 1");   //2 
   case 2:                                 //3 
   default: Console.WriteLine("Default");  //4 
} 
Ваши ответы
2
4
Объяснение:

2. В C# в конструкции switch не допускается проход (fall through) в следующий раздел без операторов goto case или goto default.
В конце каждого раздела требуется наличие оператора break или другой передачи управления (return, throw, continue).
Исключением являются пустые разделы (как 1 и 3).
4. Эти правила также относятся и к последнему разделу.

Каким будет результат выполнения кода:
using System; 
 
class App 
{  
   static void Main() 
   { 
       string s; 
       s+="string"; 
       Console.WriteLine(s); 
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

Переменная s не инициализированная. Если бы код выглядел вот так