ZH TW CSharp Keyword explicit - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
C#: explicit
聲明需要明確強制轉換的自訂轉換;可能會遺失資料或驗證登入。
簡單範例 (Example.cs)
請將此範例另存為 Example.cs,並與本頁其他範例分開執行。
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);
}
結果:
7
句法
public static explicit operator Target(Source value) => ...;
例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)
{
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; }
例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)
{
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; }
官方來源:Microsoft學習。