Блок , использующий , больше относится к утилизации, чем к созданию.Как упомянуто в документации, это ярлык для этого кода:
{
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
Это определение блока try-catch
Блок tryсодержит защищенный код, который может вызвать исключение.Блок выполняется до тех пор, пока не будет сгенерировано исключение или он не будет успешно завершен.
Итак, стратегия зависит от вас.Этот фрагмент кода:
try
{
using(Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
}
будет переведен как:
try
{
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
Как видите, вы ловите исключения, вызванные конструктором, блоком, а также Dispose
.
Принимая во внимание, что это:
using(Font font1 = new Font("Arial", 10.0f))
{
try
{
byte charset = font1.GdiCharSet;
}
}
будет переведено как:
Font font1 = new Font("Arial", 10.0f);
try
{
try //This is your try
{
byte charset = font1.GdiCharSet;
}
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
Таким образом, здесь вы поймете причину исключения ни конструктором, ни утилитой.