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

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

+91

  • Кто проходил: Vlad Dem
  • Дата прохождения: 20.03.2019
Укажите все корректные способы объявления массива в C#.
Ваши ответы
int[] x;
int[][] x;
Объявлена структура
struct MyStruct 
{ 
    public int x; 
    public int y; 
} 
Возможен ли такой код:
class MyClass : MyStruct 
{ 
} 
Ваши ответы
Нет
Объяснение:

Нет. Наследоваться от структуры нельзя, все структуры неявно запечатаны (sealed)

Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplication1 
{ 
   class Program 
   { 
       static void Main(string[] args) 
       { 
           string @string = "ABC"; 
           Console.WriteLine(string); 
 
           Console.ReadLine(); 
       } 
   } 
} 
Ваши ответы
Возникнет ошибка компиляции
Объяснение:

В Console.WriteLine мы пытаемся вывести тип, а не локальную переменную, чтобы вывести переменную к ней нужно обратиться @string.

Возможно ли иметь/создать статический индексатор в С#?
Ваши ответы
Нет
Что напечатает следующий код:
public static void Main() 
{ 
   Int32 v = 5; 
   Object o = v; 
   v = 123; 
   Console.WriteLine(v + ", " + (Int32) o); 
} 
Ваши ответы
123, 5
Какие из определений для абстрактных классов в 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 - в структурах нельзя определять конструкторы экземпляров по умолчанию

Что будет выведено на консоль после выполнения следующего кода:
static public void Main(string[] args)  
 {  
   int i = 10;  
   string s = "Hello, world";  
 
   Console.WriteLine("i = " + i);  
   ModifyInt(i);  
   Console.WriteLine("i = " + i);  
 
   Console.WriteLine("s = " + s);  
   ModifyString(s);  
   Console.WriteLine("s = " + s);  
 }  
 
 static void ModifyInt(int i)  
 {  
   i = 99;  
 }  
 
 static void ModifyString(string s)  
 {  
   s = "Hello, I've been modified.";  
 } 
Ваши ответы
i = 10
i = 10
s = Hello, world
s = Hello, world
Объяснение:

Область видимости переменных ограничена методом Main, в котором они объявлены. При вызове метода ModifyInt в качестве параметра передаётся значение переменной i, а не сама переменная, поэтому после выполнения метода, изменённая переменная будет уничтожена.
Аналогично для переменной s. Хоть она и имеет ссылочный тип(т.е. по логике должна передавать ссылку), однако не ведёт себя как объект и в методе ModifyString создаётся новая переменная с новым содержанием.

Сколько родительских классов может иметь производный класс?
Ваши ответы
Не больше одного
Объяснение:

Всегда один. В C# нет множественного наследования, а любой объявленный класс без явного указания родительского класса автоматически становится производным от System.Object. Сам System.Object не имеет родительского класса, но в вопросе спрашивается только о производных классах.

Что будет выведено на консоль при выполнении этого кода:
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
True
Объяснение:

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

Скомпилируется ли данный код:
static void Main() 
{ 
   int a = 10; 
   int b = 20; 
   byte c = a + b; 
   Console.WriteLine(c);  
} 
Ваши ответы
Да
Что напечатает следующий код:
int sum = 0; 
for (int i = 0; i < 3; i++) 
{ 
  sum += i; 
} 
Console.WriteLine("Sum of " + i + " numbers is " + sum); 
Ваши ответы
Sum of 3 numbers is 3
Что будет выведено на консоль?
using System; 
 
[Flags] 
public enum Organs: byte 
{ 
   None = 0x00, 
   Heart = 0x01, 
   Lung = 0x02, 
   Liver = 0x04 
} 
public class App 
{ 
   public static void Main(string[] args) 
   { 
 
       Organs organs = Organs.Lung | Organs.Heart; 
       Console.WriteLine(organs);   
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

правильный ответ Heart, Lung т.к атрибут Flags изменяет поведение enum без этого атрибута будет выведено 3

В каких строках содержатся ошибки компиляции
public class Foo  
   { 
       public Action A; 
       public Action B { get; private set; } 
       public event Action C; 
   } 
 
   public static class Program 
   { 
       public static void Main() 
       { 
           Foo foo = new Foo(); 
 
           foo.A += () => { }; // 1 
           foo.A();            // 2 
           foo.B += () => { }; // 3 
           foo.B();            // 4 
           foo.C += () => { }; // 5 
           foo.C();            // 6 
       } 
   } 
Ваши ответы
1
2
3
4
Объяснение:

A - делегат, к нему можно добавлять методы и его можно вызывать; B - делегат, доступный через свойство с закрытым методом записи. Из другого класса делегат B можно только вызвать, изменить - нельзя; C - событие. К нему можно добавлять методы. Вызвать событие можно только из класса в котором оно объявлено. http://msdn.microsoft.com/ru-ru/library/8627sbea(VS.90).aspx

Что напечатает следующий код:
static void Main(string[] args) { 
  int a = 0; 
  decimal b = 0; 
  double c = 0.0; 
 
  Console.WriteLine(a == b); 
  Console.WriteLine(a.Equals(b)); 
  Console.WriteLine(a == c); 
  Console.WriteLine(a.Equals(c)); 
  Console.ReadLine(); 
} 
Ваши ответы
True
True
True
True