| File: System\Drawing\Printing\TriState.cs | Web Access |
| Project: src\winforms\src\System.Drawing.Common\src\System.Drawing.Common.csproj (System.Drawing.Common) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Drawing.Printing; internal readonly partial struct TriState : IEquatable<TriState> { private readonly byte _value; // 0 is "default", not false public static TriState Default { get; } = new(0); public static TriState False { get; } = new(1); public static TriState True { get; } = new(2); private TriState(byte value) => _value = value; public bool IsDefault => this == Default; public bool IsFalse => this == False; public bool IsNotDefault => this != Default; public bool IsTrue => this == True; public static bool operator ==(TriState left, TriState right) => left.Equals(right); public static bool operator !=(TriState left, TriState right) => !left.Equals(right); public override bool Equals([NotNullWhen(true)] object? o) { Debug.Assert(o is TriState); return Equals((TriState)o); } public bool Equals(TriState other) => _value == other._value; public override int GetHashCode() => _value; public static implicit operator TriState(bool value) => value ? True : False; public static explicit operator bool(TriState value) => value.IsDefault ? throw new InvalidCastException(SR.TriStateCompareError) : value == True; /// <summary>Provides some interesting information about the TriState in String form.</summary> public override string ToString() => this == Default ? "Default" : this == False ? "False" : "True"; }