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

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

+132

  • Кто проходил: Vlad Dem
  • Дата прохождения: 25.03.2019
Какие ошибки содержатся в представленном коде:
class Test  
{ 
   static void f(ref int a, out int b) 
   { 
       a = 10 + b;  
   } 
 
   static void Main(string[] args) 
   { 
       int a; 
       int b = 5.0;  
       f(ref a, out b); 
   } 
} 
Ваши ответы
Перед вызовом метода f переменная а должна быть проинициализирована.
Можно ли в конструктор передать параметр с ключевым словом ref?
Ваши ответы
Да
Объяснение:

Можно, в этом плане конструктор ничем не отличается от любого другого метода.

Среди перечисленных конструкций C# укажите объявление поля
Ваши ответы
string Name;
Что напечатает следующий код:
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.

Укажите все правильные способы объявления массива в результате которых массив будет корректно инициализирован
Ваши ответы
int[] someArray = new int[4];
int[] someArray = {1,2,3,4};
Какие из определений для абстрактных классов в C# являются корректными?
Ваши ответы
Нельзя создавать экземпляр абстрактного класса
Абстрактный класс может включать как абстрактные члены так и виртуальные
Объяснение:

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

C# является регистрозависимым языком.
Ваши ответы
Да
В каких строках кода допущены ошибки?
using System; 
namespace Inheritance 
{ 
    class A { } 
    interface Inner { } 
    struct S : A, Inner  //1 
    { 
        int num = 10;    //2 
        public S()        //3 
        { 
        } 
        static S()       //4 
        { 
        }        
    } 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            S obj = new S(); //5 
        } 
    } 
} 
Ваши ответы
1
Объяснение:

1 - структуры не поддерживают классическое наследование, а A - это имя класса
2 - поля структур нельзя инициализировать при объявлении
3 - в структурах нельзя определять конструкторы экземпляров по умолчанию

Дана переменная
float num; 
 
Как можно проинициализировать num , чтобы код
if (num == num) 
   Console.WriteLine("Equal"); 
else 
   Console.WriteLine("Not equal"); 
Выдал результат
 
 Not equal
Ваши ответы
num = 0 / 0.0F;
Объяснение:

В результате действия оператора 0 / 0.0F получается результат, который не является числом (NAN - not a number), поэтому выражение (num == num) нельзя рассматривать с логической точки зрения

Что выведет на консоль следующая программа:
using System; 
 
namespace TestCS { 
   class Program { 
       public delegate void MethodDelegate(string param); 
 
       private void privateMethod(string str) { 
           Console.Write(str); 
       } 
 
       public void GetMeth(out MethodDelegate md) { 
           md = privateMethod; 
       } 
 
       static void Main(string[] args) { 
           MethodDelegate myMethod; 
           Program program = new Program(); 
           program.GetMeth(out myMethod); 
           myMethod("Hello"); 
           Console.Write("_world"); 
           Console.ReadKey(); 
       } 
   } 
} 
Ваши ответы
Hello_world
Что напечатает следующий код:
class MyClass 
   { 
       static void Main() 
       { 
           int a = 1, b = 2; 
           change(ref a, ref b); 
           Console.WriteLine("a=" + a + ", b=" + b); 
           Console.ReadLine(); 
       } 
 
       private static void change(ref int a, ref int b) 
       { 
           int c = a; 
           a = b; 
           b = c; 
       } 
   } 
Ваши ответы
a=2, b=1
Какие строки приведут к ошибке компилляции этого кода если он является частью метода?
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 Systеm; 
nаmеsрасе Q 
{ 
   сlаss Sample 
   { 
/*1*/    #rеgiоn Cоnstruсtоr 
       рubliс Sample(string sample) 
       { 
       } 
/*2*/    #еndrеgiоn 
 
/*3*/    #rеgiоn Рrореrtiеs 
       рubliс string Nаmе 
       { 
           sеt; 
           gеt; 
       } 
/*4*/    #еndrеgiоn 
 
/*5*/    #rеgiоn Меthоds 
       stаtiс vоid Маin(string[] аrgs) 
       { 
/*6*/            Sample n = nеw Sample("Hеlо Wrоld");     
       } 
/*7*/    #еndrеgiоn 
   } 
} 
Ваши ответы
Директивы #region / #endregion должны быть первыми на строке (до комментариев)
Объяснение:

#region, #endregion - элементы оформления кода, при этом # должна быть первым непробельным символом на строке.
/**/ - Вполне себе комментарии
Hello World является строковым выражением, его синтаксис не проверяется=)

Каков будет результат при выполнении следующего кода:
public abstract class A 
{ 
   public virtual string Print() { return "A"; } 
} 
 
public class B : A 
{ 
   public override string Print() { return "B"; } 
} 
 
public class C : B 
{ 
   public new string Print() { return "C"; } 
} 
A ac = new C(); 
Console.WriteLine(ac.Print()); 
Ваши ответы
Ошибка компиляции