Guess what? C# cannot use default parameters!
That's right!
Consider the code below.
Public Shared Function ComputeTotal(ByVal subtotal As Double, Optional ByVal salesTaxPrecent As Double = 8.8) As Double ComputeTotal = subtotal + subtotal * salesTaxPrecent / 100End Function
From either VB.NET, or Delphi, you can call it as ComputeTotal(100)
However, from C#, you need to call it as ComputeTotal(100, 8.8)
In 2017, with the release of Delphi 10.2 Tokyo, Embarcadero introduced a specialized implementation of the Observer pattern into the System.Classes unit. While it has been in the wild for 9 years, it remains a "hidden" architecture for many, primarily because it serves as the invisible engine behind LiveBindings. Other than live bindings, you can also use the Observer pattern as a way to update component settings to the Windows registry, an .ini file, or persist it elsewhere.
System.Classes