Please, can anyone explain to me statement in c# "using". I know that I use it at header of program to load basic libraries such as using System.Text;. But is not clear to me, What is the difference between:
using (var font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
and:
using var font1 = new Font("Arial", 10.0f);
byte charset = font1.GdiCharSet;
And Yes, I read the manuals for C#, But i don´t understand this in practical way.
using
is used in conjunction with types that implement the IDisposable
interface.
It ensures that when the object is out of scope, the Dispose
method is called (as defined in IDisposable
) and is often used to dispose of unmanaged resources.
Your first example is a traditional using block, where the object scope is defined by the following {}.
Your second is a new using statement, introduced in C#8, where the scope is the enclosing block, as with other local variables.
It is roughly equivalent to:
var font1 = new Font("Arial", 10.0f);
byte charset = font1.GdiCharSet;
font1.Dispose();
But as pointed out by Casey, it actually ensures the object is disposed of, even if an exception is thrown inside the block i.e.
var font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
{
font1.Dispose();
}
}