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

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

+91

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

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

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

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

Будет ли выведена строка в результате выполненения следующего кода:
object a = 1; 
  object b = 1; 
  if(b == a) 
  { 
      Console.WriteLine("equal"); 
  } 
Ваши ответы
Нет
Объяснение:

Нет. Т.к. это переменные ссылочного типа и представляют собой разные объекты.

Укажите все правильные способы объявления массива:
Ваши ответы
int[] k;
int[] k = new int [3];
В каком примере правильно объявлен расширяющий метод?
Ваши ответы
using System;
public static class stringExtension
{
    public static string Reverse(this string s)
    {
        char[] msv = s.ToCharArray();
        Array.Reverse(msv);
        return new string(msv);
    }
}
Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplication1 
{ 
   class Program 
   { 
       static void Main(string[] args) 
       { 
           string @string = "ABC"; 
           Console.WriteLine(string); 
 
           Console.ReadLine(); 
       } 
   } 
} 
Ваши ответы
Возникнет ошибка компиляции
Объяснение:

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

Скомпилируется ли данный код:
static void Main() 
{ 
   int a = 10; 
   int b = 20; 
   byte c = a + b; 
   Console.WriteLine(c);  
} 
Ваши ответы
Нет
Возможно ли иметь/создать статический индексатор в С#?
Ваши ответы
Нет
Выберите верные утверждения на счет наследования в C#
Ваши ответы
Класс может наследовать только одну реализацию
Класс может наследовать сколько угодно интерфейсов
Скомпилируется ли следующий код?
public class CustomConvertor 
{ 
   public static string ToDate(out this DateTime dt)      
   { 
       return dt.ToShortDateString();  
   } 
} 
Ваши ответы
Нет
Объяснение:

Не будет работать.
1. Класс содержащий
расширяющие методы должен быть статическим.
2. Модификатор "out" в объявлении расширяющего метода - не нужен.

Дана переменная
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) нельзя рассматривать с логической точки зрения

Лямбда-выражения на платформе .Net могут существовать в виде:
Ваши ответы
кода на промежуточном языке MSIL (в виде делегатов)
дерева выражений
Каков будет результат при выполнении следующего кода:
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()); 
Ваши ответы
B
Скомпилируется ли следующий фрагмент кода:
private void GetValues(int a,int b, out int c,out int d) 
{ 
   d = c - a; 
   c = a + b; 
}        
private void SomeMethod() 
{ 
   int a; 
   int b; 
   GetValues(1, 2, out a, out b); 
} 
Ваши ответы
Нет
Объяснение:

Не скомпилируется, поскольку переменная с в выражении d = c - a должна быть сначала проинициализирована

Какое значение будет выведено на консоль в результате выполнения программы?
struct A { 
       public virtual void foo() { 
           Console.WriteLine("A"); 
       } 
   } 
 
   struct B : A {  
       public virtual override void foo() { 
           Console.WriteLine("B"); 
       } 
   } 
 
   class Program 
   { 
       static void Main(string[] args) { 
           A v = new B(); 
           v.foo(); 
       } 
   } 
Ваши ответы
AB
Объяснение:

Программа не компилируется по двум причинам: 1. Структуры не могут иметь виртуальных методов; 2. Структуры могут быть унаследованы только от интерфейсов.