C# C#  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Средний  · 

Классы, структуры и records

Сравнивает классы, структуры и записи не по определениям, а по поведению: идентичность, копирование, равенство, изменяемость и цена выбора для модели данных. В заданиях приходится решать, какая семантика подходит предметному объекту, а какая создаёт скрытые ловушки.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В заданиях с кодом учитывайте указанную конструкцию и не додумывайте отсутствующие условия. После завершения откроются общий результат, тематические шкалы и разбор каждого ответа.
Вопрос 1 из 20
Сколько экземпляров Counter создано и какое значение напечатает программа?
C#
sealed class Counter
{
    public int Value { get; set; }
}

var a = new Counter();
var b = a;
b.Value++;
Console.WriteLine(a.Value);
Вопрос 2 из 20
Где лучше проверять, что Balance не становится отрицательным?
C#
public sealed class Account
{
    public decimal Balance { get; private set; }
    public void Withdraw(decimal amount)
    {
        if (amount > Balance) throw new InvalidOperationException();
        Balance -= amount;
    }
}
Вопрос 3 из 20
Почему публичное set у Id часто нежелательно?
Вопрос 4 из 20
Что выведет код без переопределения Equals?
C#
class User { public string Name { get; init; } = ""; }
var x = new User { Name = "A" };
var y = new User { Name = "A" };
Console.WriteLine(x.Equals(y));
Вопрос 5 из 20
Когда sealed-класс помогает выразить замысел?
Вопрос 6 из 20
Изменится ли X элемента списка после изменения копии структуры внутри foreach?
C#
struct MutablePoint { public int X; }
var list = new List<MutablePoint> { new() { X = 1 } };
foreach (var p in list) { var q = p; q.X = 2; }
Console.WriteLine(list[0].X);
Вопрос 7 из 20
Какое преимущество даёт readonly struct?
C#
public readonly struct Temperature
{
    public Temperature(decimal celsius) => Celsius = celsius;
    public decimal Celsius { get; }
}
Вопрос 8 из 20
Почему крупная структура может оказаться дорогой?
Вопрос 9 из 20
Что содержит default структуры с полем string Name?
C#
#nullable enable
struct Item { public string Name; }
Item x = default;
Console.WriteLine(x.Name is null);
Вопрос 10 из 20
Как избежать упаковки структуры при сравнении в обобщённом коде?
Вопрос 11 из 20
Сочтёт ли record два отдельно созданных User с одинаковыми компонентами равными?
C#
public record User(string Name, int Age);
var a = new User("Ada", 36);
var b = new User("Ada", 36);
Console.WriteLine(a == b);
Вопрос 12 из 20
Что делает with-выражение для record class?
C#
public record UserProfile(string Name, string City);
var original = new UserProfile("Anna", "Tallinn");
var moved = original with { City = "Tartu" };
Вопрос 13 из 20
Какой скрытый риск показывает код?
C#
public record Note(string Text, List<string> Tags);
var a = new Note("x", new() { "one" });
var b = a with { Text = "y" };
b.Tags.Add("two");
Console.WriteLine(a.Tags.Count);
Вопрос 14 из 20
Когда positional record особенно удобен?
Вопрос 15 из 20
Чем record struct отличается от record class в основе?
Вопрос 16 из 20
Какой тип разумнее для банковского счёта с устойчивой идентичностью и изменяемым балансом?
Вопрос 17 из 20
Какой тип подходит для маленькой неизменяемой координаты X,Y?
Вопрос 18 из 20
Почему mutable struct как свойство класса создаёт ловушки?
C#
class Box
{
    public MutablePoint Point { get; set; }
}

var box = new Box { Point = new MutablePoint(1, 2) };
box.Point.X = 10;
Вопрос 19 из 20
Когда record class лучше обычного class?
Вопрос 20 из 20
Какой вопрос важнее всего задать перед заменой class на struct ради производительности?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу