Using Dispose Syntax to define custom scope C# with Example
For some use cases, you can use the using syntax to help define a custom scope. For example, you can define the following class to execute code in a specific culture. public class CultureContext : IDisposable { private readonly CultureInfo originalCulture; public CultureContext(string culture) { originalCulture = CultureInfo.CurrentCulture; Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); } public void Dispose() { Thread.CurrentThread.CurrentCulture = originalCulture; } } You can then use use this class to define blocks of code that execute in a specific culture. Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); using (new CultureContext("nl-NL")) { // Code in this block uses the "nl-NL" culture Console.WriteLine(new DateTime(2016, 12, 25)); // Output: 25-12-2016 00:00:00 } using (new CultureContext("es-ES")) { // Code in this block uses the "es-ES" culture Console.WriteLine(new DateTime(2016, 12, 25)); // Output: 25/12/2016 0:00:00 } // Reverted back to the original culture Console.WriteLine(new DateTime(2016, 12, 25)); // Output: 12/25/2016 12:00:00 AM Note: as we don't use the CultureContext instance we create, we don't assign a variable for it. This technique is used by the BeginForm helper in ASP.NET MVC.