。dotnet中的DateTime可以使用符号(-)相互减去,并得到一个跨度。如何复制DateTime的行为以将-符号用于我自己的自定义对象
例如
Datetime a = DateTime.UtcNow();
Datetime b = DateTime.UtcNow();
Span c = b-a;
谢谢
您正在寻找的称为运算符重载。在此处检查参考:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/operator-overloading
当然,实现完全取决于您需要放在运算符下面的逻辑。当然,您不必返回与操作数相同的类型。
您帖子中的示例是这样实现的:
public static TimeSpan operator -(DateTime d1, DateTime d2) {
return new TimeSpan(d1.InternalTicks - d2.InternalTicks);
}
参见此处:https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,1503