namespace MS.Microservice.Core.Functional { /// /// 表示"无意义返回值"的类型,用于函数式编程中替代 void。 /// /// /// /// 在函数式编程中,函数应当是纯粹的映射:每一个输入都对应唯一的输出。 /// 但 C# 中的 void 方法不返回任何值,导致无法将它们当作一等函数(first-class function) /// 传递给 等委托。 /// /// /// Unit 解决了这一问题:它是一个只有一个实例的类型, /// 任何"无意义"的返回值都可以用 表示。 /// 将 Action 包装为返回 Func, /// 即可在函数式管道(pipeline)中统一处理。 /// /// /// 来源:《C# 函数式编程》第 3.1 节 — 使用 Unit 表示无意义的值。 /// /// public readonly struct Unit : IEquatable { /// /// 的唯一实例。 /// 等同于 default(Unit)。 /// public static readonly Unit Default = default; /// public bool Equals(Unit other) => true; /// public override bool Equals(object? obj) => obj is Unit; /// public override int GetHashCode() => 0; /// /// 返回函数式编程中惯用的 Unit 字符串表示 "()"。 /// public override string ToString() => "()"; /// 两个 值永远相等。 public static bool operator ==(Unit left, Unit right) => true; /// 两个 值永远不会“不相等”。 public static bool operator !=(Unit left, Unit right) => false; } }