| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- using System;
 
- using System.Collections.Generic;
 
- namespace Masuit.Tools.Systems;
 
- /// <summary>
 
- /// 可空对象
 
- /// </summary>
 
- /// <typeparam name="T"></typeparam>
 
- public readonly record struct NullObject<T> : IComparable, IComparable<T>, IEquatable<NullObject<T>>
 
- {
 
-     public NullObject()
 
-     {
 
-     }
 
-     public NullObject(T item)
 
-     {
 
-         Item = item;
 
-     }
 
-     public static NullObject<T> Null => new();
 
-     public T Item { get; }
 
-     /// <summary>
 
-     /// 是否是null
 
-     /// </summary>
 
-     /// <returns></returns>
 
-     public bool IsNull => Item.IsDefaultValue();
 
-     /// <summary>
 
-     /// 隐式转换
 
-     /// </summary>
 
-     /// <param name="nullObject"></param>
 
-     public static implicit operator T(NullObject<T> nullObject)
 
-     {
 
-         return nullObject.Item;
 
-     }
 
-     /// <summary>
 
-     /// 隐式转换
 
-     /// </summary>
 
-     /// <param name="item"></param>
 
-     public static implicit operator NullObject<T>(T item)
 
-     {
 
-         return new NullObject<T>(item);
 
-     }
 
-     public override string ToString()
 
-     {
 
-         return (Item != null) ? Item.ToString() : "NULL";
 
-     }
 
-     public int CompareTo(object value)
 
-     {
 
-         if (value is NullObject<T> nullObject)
 
-         {
 
-             if (nullObject.Item is IComparable c)
 
-             {
 
-                 return ((IComparable)Item).CompareTo(c);
 
-             }
 
-             return Item.ToString().CompareTo(nullObject.Item.ToString());
 
-         }
 
-         return 1;
 
-     }
 
-     public int CompareTo(T other)
 
-     {
 
-         if (other is IComparable c)
 
-         {
 
-             return ((IComparable)Item).CompareTo(c);
 
-         }
 
-         return Item.ToString().CompareTo(other.ToString());
 
-     }
 
-     public override int GetHashCode()
 
-     {
 
-         return EqualityComparer<T>.Default.GetHashCode(Item);
 
-     }
 
-     /// <summary>指示当前对象是否等于同一类型的另一个对象。</summary>
 
-     /// <param name="other">一个与此对象进行比较的对象。</param>
 
-     /// <returns>如果当前对象等于 <paramref name="other" /> 参数,则为 true;否则为 false。</returns>
 
-     public bool Equals(NullObject<T> other)
 
-     {
 
-         return EqualityComparer<T>.Default.Equals(Item, other.Item);
 
-     }
 
- }
 
 
  |