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

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

+107

  • Кто проходил: Denis Orlov
  • Дата прохождения: 13.08.2019
Укажите корректные примеры использования ключевого слова var для автоматического вывода типов:
Ваши ответы
var evenNumbers = new int [] {2, 4, 6, 8};
var myINt = 1;
var myString = "Goodbye word";
Объяснение:

Смотрим по правой части где явно можно вывести тип

Какие из перечисленных ключевых слов используются в конструкции "если":
Ваши ответы
if
Укажите все правильные способы объявления массива:
Ваши ответы
int[] k;
int[] k = new int [3];
Что выведет данный код?
static void Main(string[] args) 
{ 
   string s; 
   { 
       int s = 10; 
       Console.WriteLine(s); 
   } 
} 
Ваши ответы
Код не скомпилируется
Инкремент и декремент являются унарными операторами.
Ваши ответы
Да
Выберите верные утверждения на счет наследования в C#
Ваши ответы
Класс может наследовать только одну реализацию
Класс может наследовать сколько угодно интерфейсов
Какие изменения нужно сделать в классе, чтобы он компилировался
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; } 
       } 
   } 
Ваши ответы
Ничего убирать не надо, в коде нет ошибок компиляции
Объяснение:

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

Отметьте все верные утверждения о классе SomeClass:
internal sealed class SomeClass 
{ 
   public void SomeMethod() 
   {  
   } 
} 
Ваши ответы
у SomeClass не может быть наследников
SomeClass наследуется от System.Object
SomeClass доступен для использования только внутри сборки, в которой он определён
Объяснение:

1) SomeClass неявно наследует System.Object
2) у SomeClass не может быть наследников (модификатор sealed означает, что класс не может порождать наследников)
3) SomeClass доступен для использования только внутри сборки, в которой он определён (модификатор internal определяет класс, как внутренний)
4) явное определение конструктора без параметров для ссылочного типа необязательно - компилятор создаёт его, если конструктор не определён явно
5) SomeClass - ссылочный тип, т.к. унаследован от object

C# является регистрозависимым языком.
Ваши ответы
Да
Поддерживает ли С# перегрузку методов на основе возвращаемого значения?
Ваши ответы
Нет, не поддерживает. Но CLR поддерживает.
Какие из строк вызовут ошибку компиляции?
1)Type t1 = typeof(System.Int32); 
2)Type t2 = Type.GetType("System.Int32"); 
3)Type t3 = Type.GetType(System.Int32); 
4)Type t4 = System.Int32.GetType(); 
Ваши ответы
3
4
Объяснение:

У Type есть метод GetType, который принимает в качестве параметра String. А у каждого типа из CLR есть метод GetType, но уже без параметров.

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

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

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

Основное правило полиморфизма. Вызывается перегруженный метод определенный в объекте, экземпляр которого был создан. При этом в базовом классе метод должен быть помечен как virtual, а в классе наследнике он должен содержать override

Скомпилируется ли следующий код:
class Program 
  { 
      private static int i; 
      static Program(int a) 
      { 
          this.i = a; 
          Console.WriteLine("In static constructor"); 
      } 
      static void Main(string[] args) { } 
  } 
Ваши ответы
Нет
Объяснение:

В коде две ошибки:
1) Статический конструктор класса (конструктор типа) не должен содержать параметров.
2)Ключевое слово 'this' нельзя использовать в статическом свойстве, методе или инициализаторе статического поля.

В определении каких методов класса допущены ошибки?
public class Foo  
{ 
   public void M1(int[] p1, int[] p2) { } 
   public void M2(int[] p1, params int[] p2) { }    
   public void M3(params int[] p1, int[] p2) { } 
   public void M4(params int[] p1, params int p2) { } 
} 
Ваши ответы
M3
M4
Объяснение:

После параметра с ключевым словом params, дополнительные параметры не допускаются.
Не допускается использование ключевого слова params в объявлении метода более одного раза
http://msdn.microsoft.com/ru-ru/library/w5zay9db(VS.90).aspx