CSHARP_1001_NOTES Telegram 735
🧠 Задача: "Сколько раз выполнится блок 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



tgoop.com/csharp_1001_notes/735
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.” Telegram Channels requirements & features A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more. 4How to customize a Telegram channel? Telegram users themselves will be able to flag and report potentially false content.
from us


Telegram C# 1001 notes
FROM American