using static yönergesi (C# Başvurusu)using static directive (C# Reference)

using static Yönergesi, statik üyeleri ve iç içe geçmiş türler erişebileceğiniz bir tür adı belirtmeden bir tür belirler.The using static directive designates a type whose static members and nested types you can access without specifying a type name. Kendi sözdizimi aşağıdaki gibidir:Its syntax is:

using static <fully-qualified-type-name>;

Burada tam olarak nitelenmiş-tür adı türün statik üyeleri adıdır ve iç içe geçmiş türler, tür adı belirtmeden başvurulabilir.where fully-qualified-type-name is the name of the type whose static members and nested types can be referenced without specifying a type name. Tam nitelikli tür adı (tür adıyla birlikte tam ad alanı adı), sağlamaz, C# derleyici hatası oluşturur CS0246: "' Türü/ad alanı' tür veya ad alanı adı bulunamadı (bir using eksik yönergeniz veya derleme başvurunuz?)".If you do not provide a fully qualified type name (the full namespace name along with the type name), C# generates compiler error CS0246: "The type or namespace name 'type/namespace' could not be found (are you missing a using directive or an assembly reference?)".

using static Yönergesi Ayrıca örnek üyeleri sahip olsa bile statik üyeler (veya iç içe geçmiş türler) olan herhangi bir türü için geçerlidir.The using static directive applies to any type that has static members (or nested types), even if it also has instance members. Ancak, örnek üyeleri yalnızca tür örneği çağrılabilir.However, instance members can only be invoked through the type instance.

using static Yönergesi, C# 6'da sunulmuştur.The using static directive was introduced in C# 6.

AçıklamalarRemarks

Normalde, bir statik üye çağırdığınızda, üye adıyla birlikte tür adı sağlayın.Ordinarily, when you call a static member, you provide the type name along with the member name. Art arda türün üyeleri çağırmak için aynı tür adı girerek, ayrıntılı, belirsiz kodu neden olabilir.Repeatedly entering the same type name to invoke members of the type can result in verbose, obscure code. Örneğin, aşağıdaki tanımını bir Circle sınıfına başvuran bir dizi üyeleri Math sınıfı.For example, the following definition of a Circle class references a number of members of the Math class.

using System;

public class Circle
{
   public Circle(double radius)
   {
      Radius = radius;
   }

   public double Radius { get; set; }

   public double Diameter
   {
      get { return 2 * Radius; }
   }

   public double Circumference
   {
      get { return 2 * Radius * Math.PI; }      
   }

   public double Area
   {
      get { return Math.PI * Math.Pow(Radius, 2); }
   }
}

Açıkça başvuru gereksinimini ortadan kaldıran tarafından Math sınıf üyesi başvuruluyor, her zaman using static yönergesi çok daha temiz bir kod üretir:By eliminating the need to explicitly reference the Math class each time a member is referenced, the using static directive produces much cleaner code:

using System;
using static System.Math;

public class Circle
{
   public Circle(double radius)
   {
      Radius = radius;
   }

   public double Radius { get; set; }

   public double Diameter
   {
      get { return 2 * Radius; }
   }

   public double Circumference
   {
      get { return 2 * Radius * PI; }      
   }

   public double Area
   {
      get { return PI * Pow(Radius, 2); }
   }
}

using static yalnızca erişilebilir statik üyeleri ve belirtilen türde bildirilen iç içe geçmiş türleri içeri aktarır.using static imports only accessible static members and nested types declared in the specified type. Devralınan üyeleri içeri aktarılmaz.Inherited members are not imported. Kullanarak herhangi bir adlandırılmış tür içeri aktarabileceğiniz static yönergesi, Visual Basic modülleri dahil.You can import from any named type with a using static directive, including Visual Basic modules. Varsa F# adı, geçerli bir adlandırılmış bir türün statik üyeleri en üst düzey işlevler görünür meta verilerde C# tanımlayıcısı, ardından F# işlevleri alınabilir.If F# top-level functions appear in metadata as static members of a named type whose name is a valid C# identifier, then the F# functions can be imported.

using static Uzantı yöntemi araması için kullanılabilen belirtilen türde bildirilen genişletme yöntemleri sağlar.using static makes extension methods declared in the specified type available for extension method lookup. Ancak, genişletme yöntemleri adlarını nitelenmemiş bir başvuru kod kapsama içeri aktarılmaz.However, the names of the extension methods are not imported into scope for unqualified reference in code.

Farklı türlerden farklı tarafından alınan aynı ada sahip yöntem using static yönergeleri aynı derleme biriminde veya ad alanı bir yöntem grubu oluşturur.Methods with the same name imported from different types by different using static directives in the same compilation unit or namespace form a method group. Bu yöntem grupları aşırı yükleme çözünürlüğüne normal C# kurallara uygun olmalıdır.Overload resolution within these method groups follows normal C# rules.

ÖrnekExample

Aşağıdaki örnekte using static statik üyelerinden birini yapmak için yönergesi Console, Math, ve String sınıflarının kendi tür adını belirtmenize gerek kalmadan kullanılabilir.The following example uses the using static directive to make the static members of the Console, Math, and String classes available without having to specify their type name.

using System;
using static System.Console;
using static System.Math;
using static System.String;

class Program
{
   static void Main()
   {
      Write("Enter a circle's radius: ");
      var input = ReadLine();
      if (!IsNullOrEmpty(input) && double.TryParse(input, out var radius)) {
         var c = new Circle(radius);
         
         string s = "\nInformation about the circle:\n";
         s = s + Format("   Radius: {0:N2}\n", c.Radius);
         s = s + Format("   Diameter: {0:N2}\n", c.Diameter);
         s = s + Format("   Circumference: {0:N2}\n", c.Circumference);
         s = s + Format("   Area: {0:N2}\n", c.Area);
         WriteLine(s);
      }
      else {
         WriteLine("Invalid input...");
      }
   }
}

public class Circle
{
   public Circle(double radius)
   {
      Radius = radius;
   }

   public double Radius { get; set; }

   public double Diameter
   {
      get { return 2 * Radius; }
   }

   public double Circumference
   {
      get { return 2 * Radius * PI; }      
   }

   public double Area
   {
      get { return PI * Pow(Radius, 2); }
   }
}
// The example displays the following output:
//       Enter a circle's radius: 12.45
//       
//       Information about the circle:
//          Radius: 12.45
//          Diameter: 24.90
//          Circumference: 78.23
//          Area: 486.95

Örnekte, using static yönergesi ayrıca uygulanıp uygulanmadığını için Double türü.In the example, the using static directive could also have been applied to the Double type. Bu, çağrılabilir alacağımızdı TryParse(String, Double) türü adı belirtilmeden yöntemi.This would have made it possible to call the TryParse(String, Double) method without specifying a type name. Ancak, bu daha okunabilir bir kod oluşturur denetlemek gerekli hale beri using static hangi sayısal türün belirlemek için ifadeleri TryParse yöntemi çağrılır.However, this creates less readable code, since it becomes necessary to check the using static statements to determine which numeric type's TryParse method is called.

Ayrıca bkz.See also