Udostępnij za pośrednictwem


za pomocą instrukcji (C# odniesienia)

Zapewnia wygodny składni, która zapewnia poprawne użycie IDisposable obiektów.

Przykład

Poniższy przykład pokazuje, jak używać przy użyciu instrukcji.

using (Font font1 = new Font("Arial", 10.0f)) 
{
    byte charset = font1.GdiCharSet;
}

Uwagi

Filei Font są przykładami typów zarządzanych, mających dostęp do niezarządzanego zasobów (w tym dojścia do plików w przypadku i kontekstów urządzeń).Istnieje wiele innych rodzajów niezarządzanych zasobów i klasy biblioteki typów, które hermetyzują je.Takich typów musi implementować IDisposable interfejsu.

Jako zasada, korzystając z IDisposable obiektu, należy zadeklarować i utworzyć wystąpienia w using instrukcji.using Instrukcji wywołania Dispose metody obiektu w sposób poprawny, a (gdy jest używany jak pokazano wcześniej) również powoduje samego wykracza poza zakresem obiektu tak szybko, jak Dispose nosi nazwę.W ramach using blok, obiekt jest tylko do odczytu i nie można modyfikować lub przypisane.

using Instrukcji zapewnia, że Dispose nazywa się nawet, jeśli wystąpi wyjątek podczas, gdy są wywoływania metod obiektu.Ten sam rezultat można osiągnąć przez umieszczenie obiektu wewnątrz bloku try, a następnie wywołując Dispose w bloku finally; w rzeczywistości jest to sposób, w jaki using instrukcji jest tłumaczony przez kompilator.Przykład kodu wcześniej rozwija do następujący kod w czasie kompilacji (Uwaga dodatkowe nawiasy klamrowe, aby utworzyć ograniczony zakres dla obiektu):

{
  Font font1 = new Font("Arial", 10.0f);
  try
  {
    byte charset = font1.GdiCharSet;
  }
  finally
  {
    if (font1 != null)
      ((IDisposable)font1).Dispose();
  }
}

Wiele wystąpień określonego typu mogą być deklarowane w using instrukcji, jak pokazano w poniższym przykładzie.

using (Font font3 = new Font("Arial", 10.0f),
            font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}

Można utworzyć wystąpienia obiektu zasobu, a następnie przekazać zmiennej do using instrukcji, ale nie jest najlepszym rozwiązaniem.W tym przypadku obiekt pozostaje w zakresie po sterowanie opuści using zablokować, mimo że będzie ono prawdopodobnie nie jest już dostęp do jego zasobów niezarządzanego.Innymi słowy to zostaną już pełni zainicjowane.Jeśli spróbujesz użyć obiektu poza using zablokować ryzyko powodowania być zgłoszony wyjątek.Z tego powodu jest ogólnie lepiej jest utworzenie instancji obiektu w using instrukcji i ograniczeniu jej zakresu do using bloku.

            Font font2 = new Font("Arial", 10.0f);
            using (font2) // not recommended
            {
                // use font2
            }
            // font2 is still in scope
            // but the method call throws an exception
            float f = font2.GetHeight(); 


Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

za pomocą dyrektywy (C# odniesienia)

Koncepcje

Podręcznik programowania C#

Metoda zbycia wykonawczych

Inne zasoby

C# odniesienia

Wyrzucanie elementów bezużytecznych