Skip to content

EN CSharp Keyword explicit

Codex edited this page Oct 11, 2026 · 2 revisions

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

C#: explicit

Handbook C# · Practical Guide

Declares a user-defined conversion that requires an explicit cast. It may validate input or lose information.

Simple example (Example.cs)

Save this example separately as Example.cs. Run it independently of the other examples on this page.

Example.cs:

// PROJECT-EXAMPLE
Count count = (Count)7;
System.Console.WriteLine(count.Value);
readonly record struct Count(int Value)
{
    public static explicit operator Count(int value) => new(value);
}

Result:

7

Syntax

public static explicit operator Target(Source value) => ...;

Example 1: simple form

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)
    {
        Distance distance = 12;
        Console.WriteLine((int)distance);
    }
}
public readonly record struct Distance(int Value) { public static implicit operator Distance(int value) => new(value); public static explicit operator int(Distance value) => value.Value; }

Example 2: another practical form

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)
    {
        Label label = "ore";
        Console.WriteLine((string)label);
    }
}
public readonly record struct Label(string Text) { public static implicit operator Label(string text) => new(text); public static explicit operator string(Label label) => label.Text; }

Official source: Microsoft Learn.

Clone this wiki locally