tgoop.com/csharp_1001_notes/735
Create:
Last Update:
Last Update:
🧠 Задача: "Сколько раз выполнится блок 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
BY C# 1001 notes
Share with your friend now:
tgoop.com/csharp_1001_notes/735
