The C# version is lacking the using pattern.
https://docs.microsoft.com/en-us/dotnet/csharp/language-refe...
Also, I use a style in Java with higher-order functions (aka Callables/Runnables) that's like the pattern ascribed to Ruby, for situations not covered by AutoCloseable.