Skip to content

CSharp Keyword closed

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C#: closed

Довідник C# · Практичне керівництво

Preview-модифікатор закритої ієрархії: безпосередні нащадки мають належати тій самій збірці. Компілятор може аналізувати повноту switch за такими нащадками.

Простий приклад (Example.cs)

Збережіть цей приклад окремо як Example.cs. Запускайте його незалежно від інших прикладів на сторінці.

Example.cs:

// PROJECT-EXAMPLE
sealed class Finished { }

Цей короткий приклад використовує C# 14. Він не реалізує preview-конструкцію closed: вона тут не підтримується.

Синтаксис

public closed class Base { ... }

Офіційний довідник відносить closed до C# 15. Поточний C# 14 / .NET 10 ці приклади не приймає: потрібні сумісний preview-компілятор і відповідна runtime-платформа. Це огляд майбутньої можливості, а не команда ввімкнення підтримки.

Статус: preview; поточна конфігурація C# 14 / .NET 10 ці приклади не підтримує.

Приклад 1: базова форма

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Status status = new Ready();
        Console.WriteLine(status switch { Ready => "ready", Busy => "busy" });
    }
}
public closed record Status;
public sealed record Ready : Status;
public sealed record Busy : Status;

Приклад 2: інша практична форма

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Shape shape = new Circle(3);
        Console.WriteLine(shape switch { Circle(var radius) => radius * radius, Box(var width) => width * width });
    }
}
public closed record Shape;
public sealed record Circle(int Radius) : Shape;
public sealed record Box(int Width) : Shape;

Офіційне джерело: Microsoft Learn.

Clone this wiki locally