ソースコード
using System.Linq; internal readonly struct VersionNumber { private readonly string m_version; public int Major { get; } public int Minor { get; } public int Patch { get; } public VersionNumber( string version ) { var array = version .Split( "." ) .Select( x => int.TryParse( x, out var result ) ? result : default ) .ToArray() ; Major = array.ElementAtOrDefault( 0 ); Minor = array.ElementAtOrDefault( 1 ); Patch = array.ElementAtOrDefault( 2 ); m_version = $"{Major}.{Minor}.{Patch}"; } public VersionNumber ( int major, int minor, int patch ) { Major = major; Minor = minor; Patch = patch; m_version = $"{Major}.{Minor}.{Patch}"; } public static implicit operator string( in VersionNumber versionNumber ) { return versionNumber.m_version; } public override string ToString() { return m_version; } }