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

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

+93

  • Кто проходил: Denis Orlov
  • Дата прохождения: 12.09.2019
Укажите все корректные способы объявления массива в C#.
Ваши ответы
int[] x;
Укажите, какие свойства определены неверно?
public class Foo { 
       private int a; 
       private int c; 
 
       public int A {    
           get { return a; }  
           set { a = value; } 
       } 
 
       public int B { 
           get { return 0; } 
       } 
 
       public int C { 
           set { c = value; } 
       } 
 
       protected int D { get; set; } 
 
       protected int E { get; private set; } 
 
       protected int F { public get; set; } 
   } 
Ваши ответы
F
Объяснение:

А - свойство с явно определенными методами доступа.
В и C - свойства с методами доступа только для чтения и только для записи, соответственно.
D - автоматически реализуемое свойство
E - то же, но с асимметричными методами доступа
F - свойство определено неверно, так как видимость метода доступа(public) не может быть больше видимости свойства (protected)
Подробности:
http://msdn.microsoft.com/ru-ru/library/x9fsa0sw(VS.90).aspx

Инкремент и декремент являются унарными операторами.
Ваши ответы
Да
Среди перечисленных конструкций C# укажите объявление свойства
Ваши ответы
string Name {get{return “Name”;}}
В какой строке кода допущена ошибка:
int a = 0; 
int b = 1; 
if (a == b) a = a; 
if (a) b = a; 
Ваши ответы
в четвертой: условие должно возвращать логическое значение
Данный код скомпилируется успешно (как часть некоторого метода):
try 
{ 
   Console.WriteLine("TRY"); 
   throw new Exception("EXCEPTION"); 
} 
catch (Exception) 
{ 
    Console.WriteLine("CATCH"); 
} 
Ваши ответы
Да
Объяснение:

В блоке catch не обязательно указывать идентификатор исключения

Что напечатает следующий код:
int sum = 0; 
for (int i = 0; i < 3; i++) 
{ 
  sum += i; 
} 
Console.WriteLine("Sum of " + i + " numbers is " + sum); 
Ваши ответы
Возникнет ошибка компиляции
Дана переменная
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) нельзя рассматривать с логической точки зрения

Что будет напечатано в результате выполнения следующего кода?
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
Что будет выведено на консоль?
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

Что будет выведено на консоль после выполнения следующего кода:
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 создаётся новая переменная с новым содержанием.

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

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

Сколько объектов типа string будет создано во время выполнения следующего кода?
string s = "sdfsg";   if(s.ToLower().Substring(1, 2).EndsWith("exe"));     
Ваши ответы
4
Объяснение:

1. "sdfs"
2. Получим в результате s.ToLower()
3. Получим в результате .Substring()
4. "exe"

В определении каких методов класса допущены ошибки?
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

Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplication1 
{ 
   class Program 
   { 
       static void Main(string[] args) 
       { 
           Console.Write(Test.Foo(1)+Test.Foo(2)*Test.Foo(3)); 
 
           Console.ReadLine(); 
       } 
   } 
 
   class Test 
   { 
       public static int Foo(int o) 
       { 
           Console.Write(o); 
           return o; 
       } 
   } 
} 
Ваши ответы
1237
Объяснение:

Изначально отрабатывают вызываемые методы, а уже потом вычисляется значение выражения