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

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

-30

  • Кто проходил: orchikovroman
  • Дата прохождения: 16.05.2019
Скомпилируется ли данный код:
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 не может быть наследников
Объяснение:

1) SomeClass неявно наследует System.Object
2) у SomeClass не может быть наследников (модификатор sealed означает, что класс не может порождать наследников)
3) SomeClass доступен для использования только внутри сборки, в которой он определён (модификатор internal определяет класс, как внутренний)
4) явное определение конструктора без параметров для ссылочного типа необязательно - компилятор создаёт его, если конструктор не определён явно
5) SomeClass - ссылочный тип, т.к. унаследован от object

Укажите корректные примеры использования ключевого слова var для автоматического вывода типов:
Ваши ответы
var myNull = null;
var myINt = 1;
var myString = "Goodbye word";
Объяснение:

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

Что будет выведено на экран?
class Test  
{ 
   static void Main(string[] args)  
   { 
       int i = 1; 
       Console.WriteLine("i = {0}", i++); 
   } 
} 
Ваши ответы
i = 2
Что верно по отношению к данному фрагменту кода:
for (;;) 
{ 
  Console.WriteLine("test"); 
} 
Ваши ответы
Код не скомпилируется, так как цикл объявлен неправильно
Укажите, какие свойства определены неверно?
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; } 
   } 
Ваши ответы
E
F
Объяснение:

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

Какие из перечисленных ключевых слов используются в конструкции "если":
Ваши ответы
Else
if
В каком примере правильно объявлен расширяющий метод?
Ваши ответы
using System;
public static class stringExtension
{
    public static string Reverse(base string s)
    {
        char[] msv = s.ToCharArray();
        Array.Reverse(msv);
        return new string(msv);
    }
}
Что будет выведено на консоль при выполнении этого кода:
using System; 
using System.Collections.ObjectModel; 
 
using ByteCollection1 = System.Collections.ObjectModel.Collection<byte>;  
 
namespace CollectionApplication  
{  
  class Program  
  {  
      class ByteCollection2 : Collection<byte> { }  
 
      static void Main(string[] args)  
      {  
          Console.WriteLine(typeof(ByteCollection1) == typeof(Collection<byte>));  
          Console.WriteLine(typeof(ByteCollection2) == typeof(Collection<byte>));  
      }  
  }  
} 
 
Ваши ответы
Возникнет ошибка компиляции
Объяснение:

class ByteCollection2 : Collection { } - это уже новый тип. Поэтому typeof(ByteCollection2) возвращает результат отличный от typeof(Collection<T>)), скажем T = int.

В каких строках кода допущены ошибки?
using System; 
namespace Inheritance 
{ 
    class A { } 
    interface Inner { } 
    struct S : A, Inner  //1 
    { 
        int num = 10;    //2 
        public S()        //3 
        { 
        } 
        static S()       //4 
        { 
        }        
    } 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            S obj = new S(); //5 
        } 
    } 
} 
Ваши ответы
1
3
4
Объяснение:

1 - структуры не поддерживают классическое наследование, а A - это имя класса 2 - поля структур нельзя инициализировать при объявлении 3 - в структурах нельзя определять конструкторы экземпляров по умолчанию

Что выведется на консоль:
using System; 
 
class MainClass 
{ 
   static void Main() 
   { 
       int? i = null; 
       Console.WriteLine(i ?? Convert.ToInt32(i.HasValue)); 
   } 
} 
Ваши ответы
Код не скомпилируется
Какие из строк вызовут ошибку компиляции?
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
Объяснение:

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

Каков будет результат при выполнении следующего кода:
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()); 
Ваши ответы
Ошибка компиляции
Что получим на экране, если выполним этот код ?
public  static void Main() 
{ 
   int i, j, s = 0; 
   for (i = 0, j = 6; i < j; ++i, --j ) 
   { 
       s += i; 
   } 
   Console.WriteLine(s); 
} 
Ваши ответы
Ошибка времени компиляции
Объяснение:

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

Какое значение будет выведено на консоль в результате выполнения программы?
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. Структуры могут быть унаследованы только от интерфейсов.