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

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

+54

  • Кто проходил: andrushazb
  • Дата прохождения: 11.01.2019
Какие из следующих выражений выполняют проверку на равенство или эквивалентность:
Ваши ответы
a.Equals(b)
a == b
Возможно ли иметь/создать статический индексатор в С#?
Ваши ответы
Нет
Среди перечисленных конструкций C# укажите объявление свойства
Ваши ответы
string Name {get{return “Name”;}}
Укажите ошибки в коде:
using Systеm; 
nаmеsрасе Q 
{ 
   сlаss Nаmе 
   { 
   #rеgiоn Cоnstruсtоr 
       рubliс Nаmе(string nаmе) 
       { 
           this.Nаmе = nаmе; 
       } 
   #еndrеgiоn 
 
   #rеgiоn Рrореrtiеs 
/*1*/   рubliс string Nаmе 
       { 
           рrivаtе sеt; 
           gеt; 
       } 
   #еndrеgiоn 
 
   #rеgiоn Меthоds 
       stаtiс vоid Маin(string[] аrgs) 
       { 
/*2*/            Nаmе n = nеw Nаmе("Hеlо Wrоld");     
/*3*/            n.Disроsе(); // освобождаем память. 
       } 
   #еndrеgiоn 
   } 
} 
Ваши ответы
Строка /*1*/ Класс Name не может содержать свойство Name
Объяснение:

/**/ - Вполне себе комментарии
Hello World является строковым выражением, его синтаксис не проверяется=)
Класс не может содержать членов с именем, совпадающим с именем самого класса.
Dispose не объявлен.

Какие действия необходимо и достаточно выполнить для того, чтобы программа компилировалась?
namespace Test 
{ 
   class TypeA 
   { 
       class TypeB:TypeA 
       { 
           public override void MethodA() { Console.WriteLine("TypeB"); } 
       } 
 
       public virtual void MethodA() { Console.WriteLine("TypeA"); } 
   } 
 
   class Prоgrаm  
   { 
       static void Main(string[] args) 
       { 
           TypeA a = new TypeA(); 
           TypeB b = new TypeB(); 
           a.MethodA(); 
           b.MethodA(); 
           Console.ReadLine(); 
       } 
   } 
} 
Ваши ответы
Изменить модификатор доступа класса TypeB на public
Что напечатает данный код:
class Test { 
  static void increment(int p) 
  { 
    ++p; 
  } 
  static void Main( )  
  { 
    int x = 8; 
    increment(x); 
    Console.WriteLine(x++); 
  } 
} 
Ваши ответы
8
Объяснение:

Параметр x передается в метод по значению. Сначала произойдет вывод значения, а потом инкремент, так как в данном случае используется постфиксный оператор

Что выведет на консоль следующая программа:
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
Что надо подставить на место ..., чтобы код скомпилировался?
class A 
{ 
   static A() 
   { 
   } 
} 
class B : A 
{ 
   static B() : ... base() 
   { 
   } 
} 
Ваши ответы
Из статического конструктора вызов base() недопустим
Что напечатает следующий код:
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
Укажите корректные примеры использования ключевого слова var для автоматического вывода типов:
Ваши ответы
var someCollection = {1, 2, 3};
var evenNumbers = new int [] {2, 4, 6, 8};
var myINt = 1;
var myString = "Goodbye word";
Объяснение:

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

Укажите, какие свойства определены неверно?
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; } 
   } 
Ваши ответы
Все свойства определены корректно
Объяснение:

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

Укажите все правильные способы объявления массива:
Ваши ответы
int k[3];
int[3] k;
int[] k = new int [3];
Скомпилируется ли данный код?
internal sealed class SomeGenericClass<T>  
{ 
   public static T SomeMethod()  
   { 
       return new T(); 
   } 
} 
Ваши ответы
да
Объяснение:

Не скомпилируется, т.к не указано ограничение (происходит вызов открытого конструктора без параметров, но не у всех ссылочных типов он есть). Для того, чтобы код скомпилировался необходимо добавить ограничение, например:

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

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

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