TGViewer
C# 1001 notes C# 1001 notes @csharp_1001_notes · 6.64K subscribers
Post #735 2K
🧠 Задача: "Сколько раз выполнится блок Console.WriteLine?"


public class Program
{
public static void Main()
{
var obj = new Counter();
for (int i = 0; i < 3; i++)
{
Console.WriteLine(obj++);
}
}
}

public class Counter
{
private int _value = 0;

public static Counter operator ++(Counter c)
{
c._value++;
return c;
}

public static implicit operator int(Counter c)
{
return c._value;
}
}



❓Вопрос:
Что выведет программа?

🔍 Разбор:

На первый взгляд кажется, что программа выведет:

1
2
3

📎 Но на самом деле она выведет:

0
1
2

Почему?
Оператор obj++ — это постфиксный инкремент. Он:

сначала вызывает implicit operator int для текущего значения,

а затем вызывает operator ++.

То есть порядок такой:

Console.WriteLine(obj++) вызывает implicit int до инкремента

только потом ++ увеличивает значение.

✅ Что это проверяет:

Знание порядка вызова операторов (++ и implicit)

Понимание поведения постфиксных операций в .NET

Умение читать и анализировать перегрузки операторов


@csharp_1001_notes
More from @csharp_1001_notes
  1. Sep 20, 2026🧩 C# Channels: сообщение попало в очередь. Почему обработчик его не получил? Два воркера…
  2. Sep 16, 2026Эта задача проверяет понимание Memory<T>, pooling, ownership, IAsyncEnumerable, cancellati…
  3. Sep 16, 2026# C# 14: хитрая задача на ArrayPool, IAsyncEnumerable и время жизни памяти Есть поток данн…
  4. Sep 14, 2026# C# 14: конкурентный кеш без race condition Реализуйте потокобезопасный кеш: public seale…
  5. Sep 14, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 15 сентября(уже завтра!) в 1…
  6. Sep 11, 2026🔧 Как передать многострочный PEM через Aspire в ASP.NET Core Сертификаты и ключи в PEM со…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →