Как вычесть объект в ядре dotnet, используя символ минус? Похож на DateTime - PullRequest
0 голосов
/ 06 октября 2019

DateTimes в dotnet могут быть вычтены друг из друга с помощью символа (-) и в результате получен диапазон. Как мне повторить поведение DateTime для использования символа -, но для моего собственного пользовательского объекта

Например

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

Спасибо

1 Ответ

1 голос
/ 06 октября 2019

То, что вы ищете, называется перегрузкой оператора. Проверьте ссылку здесь: 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

...