Multiply è ora disponibile per TimeSpan !!!
Ma solo per .NET Core e .NET Standard .
A partire da .NET Core 2.0 (o .NET Standard 2.1 ) è possibile eseguire correttamente il codice seguente:
Console.WriteLine(TimeSpan.FromSeconds(45) * 3);
Limitazioni
Tuttavia, è importante notare ( come descritto nel documento ) che questo si applica solo a .NET Core 2.0 + e .NET Standard 2.1 +.
Ad oggi (26 novembre 2019) il codice sopra riportato fallirà anche nell'ultima versione di .NET Framework : 4.8 .
Se provi il codice sopra in un'applicazione console , ad esempio, che esegue .NET Core 1.1 o versioni precedenti o .NET Framework 4.8 o versioni precedenti , verrà generata la seguente eccezione:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: "Operator" * "non può essere applicato agli operandi di tipo" System.TimeSpan "e" int "
Perché non in .NET Framework?
Per capire perché diavolo non possiamo usare il codice sopra in .NET Framework, è illuminante vedere cosa dice Immo :
.NET Core è la versione open source, multipiattaforma e in rapido movimento di .NET. A causa della sua natura side-by-side, può richiedere modifiche che non possiamo rischiare di applicare di nuovo a .NET Framework. Ciò significa che .NET Core otterrà nuove API e funzionalità del linguaggio nel tempo che .NET Framework non può. In Build abbiamo mostrato una demo in che modo le API dei file sono più veloci su .NET Core. Se inseriamo le stesse modifiche in .NET Framework, potremmo rompere le applicazioni esistenti e non vogliamo farlo.
TimeSpan.FromTicks((long)(duration.Ticks*multiplier))