我如何使用减号在dotnet核心中减去一个对象?类似于DateTime

问题描述 投票:0回答:1

。dotnet中的DateTime可以使用符号(-)相互减去,并得到一个跨度。如何复制DateTime的行为以将-符号用于我自己的自定义对象

例如

Datetime a = DateTime.UtcNow();
Datetime b = DateTime.UtcNow();
Span c = b-a;

谢谢

c# .net syntax
1个回答
0
投票

您正在寻找的称为运算符重载。在此处检查参考: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

© www.soinside.com 2019 - 2024. All rights reserved.