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

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

+30

Укажите все правильные способы объявления массива:
Ваши ответы
int[] k;
int[] k = new int [3];
Скомпилируется ли данный код:
static void Main() 
{ 
   int a = 10; 
   int b = 20; 
   byte c = a + b; 
   Console.WriteLine(c);  
} 
Ваши ответы
Нет
Отметьте все верные утверждения о классе 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

Где, по мнению CLR, расположено начало исключения
class Program  
{ 
   static void Main(string[] args)  
   { 
       try  
       { 
           int value = int.Parse("test exception"); 
       }  
       catch (Exception e)  
       { 
           throw e; // Здесь ли, по мнению CLR, расположено начало исключения? 
       } 
   } 
} 
Ваши ответы
Да
Объяснение:

В случае использования конструкции "throw e;" (с явным указанием объекта исключения) считается, что ошибка будет обработана, поэтому создается новый объект и вся информация о причине возникновения исключения (StackTrace) теряется.
При повторной генерации исключения с помощью "throw;" начальная точка в стеке не сбрасывается, поэтому CLR считает, что исключение возникло выше по стеку.

Cколько раз выполнится тело следующего цикла:
int i = 0; 
while (++i < 3)  
{ 
   Console.Write(i); 
} 
Ваши ответы
2
Что напечатает программа:
class Program 
{ 
   static bool SomeMethod()         
   { 
       Console.WriteLine("Method was invoked");            
       return true;         
   }  
   static void Main(string[] args)        
   { 
       if (true & false & SomeMethod()) 
       { 
           Console.WriteLine("Inside IF operator"); 
       }             
   }         
} 
Ваши ответы
Method was invoked
Объяснение:

Операция & в условном операторе позволяет полностью вычислить условие независимо от операндов, даже если очевидно, что результат не зависит от последующих операндов. Эта операция отличается от операции && тем, что полностью вычисляет выражение.

Что выведет на экран код:
static void Main() 
{ 
   if (false) 
   { 
       int i = 1; 
   } 
   int i = 2; 
   Console.WriteLine(i); 
} 
Ваши ответы
Код не скомпилируется
Что делает оператор %?
Ваши ответы
Возвращает остаток от деления
Форматирует значения разных типов в строку
Выберите безошибочный код:
Ваши ответы
sbyte x, y = 100; 
x = 90; 
x = x + y; 
float f = 90.7f; double d = 70.10; 
f=f + d; 
ushort u = 10; 
ushort s = ++u; 
byte a = 0x1a, b = 2; 
a += b; 
uint u = 1; 
int i = 1; 
long l = u * i; 
Объяснение:

Допустимо использование "цепочки присваиваний" и преобразование типов в операциях присваивания при совместимых типах данных. В выражениях значения типов sbyte и char преобразуются в int. Если один из операндов имеет тип double, то результат выражения тоже будет double.

Что выведется на консоль:
using System; 
 
class MainClass 
{ 
   static void Main() 
   { 
       int? i = null; 
       Console.WriteLine(i ?? Convert.ToInt32(i.HasValue)); 
   } 
} 
Ваши ответы
Код выдаст исключение NullReferenceException
Скомпилируется ли следующий код (как часть некоторого метода):
ArrayList list = new ArrayList(); 
list.Add(new Object()); 
list.Add(new Exception()); 
list.Add(new Random().Next(10)); 
list.Add(new ArrayList()); 
Ваши ответы
Нет
Какие из строк вызовут ошибку компиляции?
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(); 
Ваши ответы
1
3
Объяснение:

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

Какие строки приведут к ошибке компилляции этого кода если он является частью метода?
int k = 1; 
 
switch (k) 
{ 
   case 0:                                 //1 
   case 1:  Console.WriteLine("Case 1");   //2 
   case 2:                                 //3 
   default: Console.WriteLine("Default");  //4 
} 
Ваши ответы
1
3
Объяснение:

2. В C# в конструкции switch не допускается проход (fall through) в следующий раздел без операторов goto case или goto default. В конце каждого раздела требуется наличие оператора break или другой передачи управления (return, throw, continue). Исключением являются пустые разделы (как 1 и 3). 4. Эти правила также относятся и к последнему разделу.

Какое значение будет выведено на консоль в результате выполнения программы?
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(); 
       } 
   } 
Ваши ответы
B
Объяснение:

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

В каких строках содержатся ошибки компиляции?
public class Foo  
   { 
       private double field; 
 
       public double A  
       { 
           get { return field + 10.0; }        // 1 
           set { field = value - 10.0; }       // 2 
       } 
       public int B { get; private set; }      // 3 
   } 
 
   public static class Program 
   { 
       public static void Main() 
       { 
           Foo f = new Foo(); 
 
           double a = f.A;     // 4 
           int b = f.B;        // 5 
           f.B = 10;           // 6 
       } 
   } 
Ваши ответы
4
5
6
Объяснение:

А - свойство с методами доступа для чтения и для записи. B - автоматически реализуемое свойство с асимметричными методами доступа. Для записи свойство доступно только членам класса Подробности здесь: http://msdn.microsoft.com/ru-ru/library/x9fsa0sw(VS.90).aspx