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

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

-1

  • Кто проходил: andrushazb
  • Дата прохождения: 11.01.2019
Какие из следующих выражений выполняют проверку на равенство или эквивалентность:
Ваши ответы
a.Equals(b)
a == b
Как могут инициализироваться readonly поля экземпляра класса?
Ваши ответы
в конструкторе
при объявлении
Выберите верные утверждения на счет наследования в C#
Ваши ответы
Класс может наследовать только одну реализацию
Класс может наследовать сколько угодно интерфейсов
Что будет выведено в результате работы программы?
#if DEBUG 
       Console.WriteLine("DEBUG"); 
#else 
       Console.WriteLine("RELEASE"); 
#endif 
Ваши ответы
При компиляции в debug моде будет выведено "DEBUG", а при release - "RELEASE"(если определенны эти константы)
Объяснение:

C# поддерживает директивы препроцессора

Что выведет на консоль следующая программа:
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
Что напечатает следующий код:
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
False
True
False
Для инкапсуляции вы хотите определить автосвойство так, чтобы невозможно было вызвать сеттер за пределами класса, но геттер оставить доступным. В каком из заданных вариантов описано нужное свойство?
Ваши ответы
public int Value { get; }
public int Value { get; private set; }
Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplication1 
{ 
   class Program 
   { 
       static void Main(string[] args) 
       { 
           string @string = "ABC"; 
           Console.WriteLine(string); 
 
           Console.ReadLine(); 
       } 
   } 
} 
Ваши ответы
ABC
Объяснение:

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

Какой будет результат компиляции и выполнения данного кода:
public static void Main(string[] args) 
{ 
   int k = 1;  
   Console.WriteLine(k++ + ++k); 
} 
Ваши ответы
5
Объяснение:

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

Какие из определений для абстрактных классов в C# являются корректными?
Ваши ответы
Нельзя создавать экземпляр абстрактного класса
Абстрактные классы не могут наследовать интерфейсы
Объяснение:

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

C# является регистрозависимым языком.
Ваши ответы
Нет
Что выведется на консоль:
using System; 
 
class MainClass 
{ 
   static void Main() 
   { 
       int? i = null; 
       Console.WriteLine(i ?? Convert.ToInt32(i.HasValue)); 
   } 
} 
Ваши ответы
Код выдаст исключение NullReferenceException
Что будет напечатано в результате выполнения следующего кода?
class Program { 
       class A { 
           public virtual void Print() { 
               Console.WriteLine("A::Print"); 
           } 
       } 
 
       class B : A { 
           public override void Print() { 
               Console.WriteLine("B::Print"); 
           } 
       } 
 
       class C : B { 
           public new void Print() { 
               base.Print(); 
 
               Console.WriteLine("C::Print"); 
           } 
       } 
 
       static void Main(string[] args) { 
           A a = new A(); 
           A b = new B(); 
           A c = new C(); 
 
           a.Print(); 
           b.Print(); 
           c.Print(); 
 
           Console.ReadKey(); 
       } 
   } 
Ваши ответы
A::Print
B::Print
B::Print
C::Print
Каков будет результат при выполнении следующего кода:
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

Что получим на экране, если выполним этот код ?
public  static void Main() 
{ 
   int i, j, s = 0; 
   for (i = 0, j = 6; i < j; ++i, --j ) 
   { 
       s += i; 
   } 
   Console.WriteLine(s); 
} 
Ваши ответы
21
Объяснение:

В цикле допустимо иметь более одного счетчика.