TGViewer
C# (C Sharp) programming C# (C Sharp) programming @csharp_ci · 18.1K subscribers
Post #1902 685
Задачка по C# 14: обновили проект на .NET 10, и код молча начал работать иначе

Что выведет этот код?


var c = new Counter();
c.Value = 5;

Console.WriteLine($"{c.Value} {c.Raw} {c.GetRaw()}");

class Counter
{
private int field = 100;

public int Value
{
get => field;
set => field = value;
}

public int Raw => field;

public int GetRaw() => field;
}


Варианты:


A) 5 5 5
😎 5 100 100
C) 5 0 100
D) Код не скомпилируется


Ответ: **C) 5 0 100**

В C# 14 слово `field` внутри аксессоров свойства стало ключевым. Теперь оно означает **скрытое поле, которое компилятор создаёт для этого свойства**, даже если в классе уже есть член с таким именем.

Поэтому в этом коде три разных `field`:

```
Value → своё скрытое поле: записали 5, прочитали 5
Raw → тоже аксессор, но со своим скрытым полем: в него никто не писал, значит 0
GetRaw() → обычный метод, ключевое слово тут не действует, это поле класса: 100
```

Главная ловушка в строке `public int Raw => field;`. Выглядит как обычный метод-однострочник, но это свойство, а значит get-аксессор. Поле класса со значением 100 здесь вообще не видно.

До C# 14 этот же код выводил `5 5 5`: все три обращения шли к одному полю класса. После обновления он компилируется и тихо меняет поведение. Чтобы обратиться к старому полю, внутри аксессоров нужно писать `this.field` или `
@field`.
More from @csharp_ci
  1. Oct 9, 2026Post #1901
  2. Oct 7, 2026⚡️ Microsoft переработала C# Dev Kit: меньше памяти, быстрее запуск В версии 11.0 шесть пр…
  3. Oct 6, 2026🛠 Вышел Microsoft.Data.SqlClient 7.1.1 Обновление .NET-драйвера для SQL Server исправляет…
  4. Oct 5, 2026Одна задача, три языка: Rust, C# или C++? В курсе Google *Comprehensive Rust* есть упражне…
  5. Oct 5, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  6. Oct 4, 2026🖥 .NET 10 научился класть объекты на стек: escape analysis в JIT Одна из самых полезных о…
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 →