using yönergesi

yönergesi, using bir ad alanında tanımlanan türleri, bu türün tam ad alanını belirtmeden kullanmanıza olanak tanır. Yönerge, using aşağıdaki örnekte gösterildiği gibi temel biçiminde tek bir ad alanından tüm türleri içeri aktarır:

using System.Text;

Yönergeye using iki değiştirici uygulayabilirsiniz:

  • Değiştirici, global projenizdeki her kaynak dosyaya aynı yönergeyi eklemeyle aynı using etkiye sahiptir. Bu değiştirici C# 10'da kullanıma sunulmuştur.
  • Değiştiricistatic, static üyeleri ve iç içe yerleştirilmiş türleri ad alanında tüm türleri içeri aktarmak yerine tek bir türden içeri aktarır. Bu değiştirici C# 6.0 ile kullanıma sunulmuştur.

Projenizdeki tüm kaynak dosyalarındaki bir türdeki statik üyeleri içeri aktarmak için her iki değiştiriciyi de birleştirebilirsiniz.

Ayrıca, bir ad alanı veya using diğer ad yönergesiyle bir tür için diğer ad da oluşturabilirsiniz.

using Project = PC.MyCompany.Project;

Diğer ad kullanma yönergesinde değiştiriciyi global kullanabilirsiniz.

Not

anahtar using sözcüğü, dosyalar ve yazı tipleri gibi nesnelerin doğru şekilde işlenmesine yardımcı IDisposable olan using deyimleri oluşturmak için de kullanılır. using deyimi hakkında daha fazla bilgi için bkz. using Deyimi.

Değiştiricisi olmayan bir using yönergenin global kapsamı, içinde göründüğü dosyadır.

yönergesi using görünebilir:

  • Bir kaynak kod dosyasının başında, herhangi bir ad alanı veya tür bildirimlerinden önce.
  • Değiştirici kullanılmadığı sürece global , herhangi bir ad alanında, ancak bu ad alanında bildirilen ad alanları veya türlerden önce, bu durumda yönergenin tüm ad alanı ve tür bildirimlerinden önce görünmesi gerekir.

Aksi takdirde, derleyici hatası CS1529 oluşturulur.

using Ad alanını belirtmek zorunda kalmadan ad alanında türleri kullanmak için bir yönerge oluşturun. Yönerge using , belirttiğiniz ad alanında iç içe yerleştirilmiş ad alanlarına erişmenizi sağlamaz. Ad alanları iki kategoriye ayrılır: kullanıcı tanımlı ve sistem tanımlı. Kullanıcı tanımlı ad alanları, kodunuzda tanımlanan ad alanlarıdır. Sistem tanımlı ad alanlarının listesi için bkz. .NET API Tarayıcısı.

genel değiştirici

Değiştiriciyi global yönergeye using eklemek, komutunun derlemedeki tüm dosyalara (genellikle bir proje) uygulandığı anlamına gelir. yönergesi global using C# 10'a eklendi. Söz dizimi şu şekildedir:

global using <fully-qualified-namespace>;

burada tam ad alanı, ad alanı belirtilmeden türlerine başvurulabilen ad alanının tam adıdır.

Genel bir using yönergesi, herhangi bir kaynak kod dosyasının başında görünebilir. Tek bir dosyadaki tüm global using yönergelerin önce görünmesi gerekir:

  • Değiştiricisi olmayan global tüm using yönergeler.
  • Dosyadaki tüm ad alanı ve tür bildirimleri.

Herhangi bir kaynak dosyaya yönerge ekleyebilirsiniz global using . Genellikle, bunları tek bir konumda tutmak istersiniz. Yönergelerin global using sırası, tek bir dosyada veya dosyalar arasında önemli değildir.

Değiştirici global değiştirici ile static birleştirilebilir. Değiştirici global , diğer ad kullanma yönergesine uygulanabilir. Her iki durumda da yönergenin kapsamı geçerli derlemedeki tüm dosyalardır. Aşağıdaki örnek, projenizdeki tüm dosyalarda içinde System.Math bildirilen tüm yöntemlerin kullanılmasını sağlar:

global using static System.Math;

Proje dosyanıza bir öğe ekleyerek genel olarak bir <Using> ad alanı da ekleyebilirsiniz, örneğin. <Using Include="My.Awesome.Namespace" /> Daha fazla bilgi için bkz<Using>. öğe.

Önemli

.NET 6 için C# şablonları en üst düzey deyimleri kullanır. .NET 6 önizlemelerine zaten yükselttiyseniz uygulamanız bu makaledeki kodla eşleşmeyebilir. Daha fazla bilgi için Yeni C# şablonları en üst düzey deyimleri oluşturma makalesine bakın

.NET 6 SDK'sı, aşağıdaki SDK'ları kullanan projeler için bir dizi örtükglobal using yönerge de ekler:

  • Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Worker

Bu örtük global using yönergeler, proje türü için en yaygın ad alanlarını içerir.

statik değiştirici

yönergesi, using static statik üyeleri ve iç içe türler tür adı belirtmeden erişebileceğiniz bir türü adlandırır. yönergesi using static C# 6'da kullanıma sunulmuştur. Söz dizimi şu şekildedir:

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

<fully-qualified-type-name>, statik üyelerine ve iç içe türlerine bir tür adı belirtilmeden başvurulabilen türün adıdır. Tam tür adı (tür adıyla birlikte tam ad alanı adı) sağlamazsanız C# derleyici hatası CS0246 oluşturur: "'tür/ad alanı' türü veya ad alanı adı bulunamadı (kullanma yönergesi veya derleme başvurusu eksik mi?)".

yönergesi, using static örnek üyeleri de olsa, statik üyeleri (veya iç içe türler) olan herhangi bir tür için geçerlidir. Ancak, örnek üyeleri yalnızca tür örneği aracılığıyla çağrılabilir.

Türün statik üyelerine, erişimi tür adıyla nitelemeden erişebilirsiniz:

using static System.Console;
using static System.Math;
class Program
{
    static void Main()
    {
        WriteLine(Sqrt(3*3 + 4*4));
    }
}

Normalde statik üyeyi çağırdığınızda, üye adıyla birlikte tür adını da sağlarsınız. Türün üyelerini çağırmak için aynı tür adını tekrar tekrar girmek, ayrıntılı ve belirsiz kodla sonuçlanabilir. Örneğin, bir Circle sınıfın aşağıdaki tanımı sınıfın birçok üyesine başvurur Math .

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); }
   }
}

Bir üyeye her başvurulsa sınıfına Math açıkça başvurma gereksinimini ortadan kaldırarak yönergesi using static daha temiz kod üretir:

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 belirtilen türde bildirilen erişilebilir statik üyeleri ve iç içe türleri içeri aktarır. Devralınan üyeler içeri aktarılamaz. Visual Basic modülleri de dahil olmak üzere herhangi bir adlandırılmış türden bir using static yönerge ile içeri aktarabilirsiniz. Üst düzey F# işlevleri meta verilerde adı geçerli bir C# tanımlayıcısı olan adlandırılmış bir türün statik üyeleri olarak görünüyorsa, F# işlevleri içeri aktarılabilir.

using static belirtilen türde bildirilen uzantı yöntemlerini, uzantı yöntemi araması için kullanılabilir hale getirir. Ancak, uzantı yöntemlerinin adları kodda nitelenmemiş başvuru için kapsama aktarılmaz.

Aynı derleme biriminde veya ad alanında farklı yönergeler tarafından using static farklı türlerden içeri aktarılan aynı ada sahip yöntemler bir yöntem grubu oluşturur. Bu yöntem grupları içinde aşırı yükleme çözümlemesi normal C# kurallarına uyar.

Aşağıdaki örnek, , Mathve sınıflarının statik üyelerini Consoletür adlarını belirtmek zorunda kalmadan kullanılabilir hale getirmek için yönergesini kullanır using staticString.

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 yönerge using static türüne Double de uygulanmış olabilir. Bu yönergenin eklenmesi, bir tür adı belirtmeden yöntemini çağırmayı TryParse(String, Double) mümkün hale getirir. Ancak, bir tür adı olmadan kullanmak TryParse daha az okunabilir kod oluşturur, çünkü hangi sayısal türün TryParse yönteminin using static çağrıldığını belirlemek için yönergeleri denetlemek gerekli hale gelir.

using static ayrıca türler için enum de geçerlidir. Sabit listesi ile ekleyerek using static , türü artık sabit listesi üyelerini kullanmak için gerekli değildir.

using static Color;

enum Color
{
    Red,
    Green,
    Blue
}

class Program
{
    public static void Main()
    {
        Color color = Green;
    }
}

diğer ad kullanma

Bir tanımlayıcıyı ad using alanına veya türe uygun hale getirmenizi kolaylaştırmak için bir diğer ad yönergesi oluşturun. Herhangi bir using yönergede, tam ad alanı veya türü, öncesinde gelen yönergelerden using bağımsız olarak kullanılmalıdır. Bir using yönergenin bildiriminde hiçbir using diğer ad kullanılamaz. Örneğin, aşağıdaki örnek bir derleyici hatası oluşturur:

using s = System.Text;
using s.RegularExpressions; // Generates a compiler error.

Aşağıdaki örnekte ad alanı için diğer using adın nasıl tanımlanacağı ve kullanılacağı gösterilmektedir:

namespace PC
{
    // Define an alias for the nested namespace.
    using Project = PC.MyCompany.Project;
    class A
    {
        void M()
        {
            // Use the alias
            var mc = new Project.MyClass();
        }
    }
    namespace MyCompany
    {
        namespace Project
        {
            public class MyClass { }
        }
    }
}

Using alias yönergesinin sağ tarafında açık bir genel tür olamaz. Örneğin, için bir diğer ad kullanarak oluşturamazsınız, ancak için bir List<int>diğer ad List<T>oluşturabilirsiniz.

Aşağıdaki örnekte bir using sınıf için yönerge ve using diğer adın nasıl tanımlanacağı gösterilmektedir:

using System;

// Using alias directive for a class.
using AliasToMyClass = NameSpace1.MyClass;

// Using alias directive for a generic class.
using UsingAlias = NameSpace2.MyClass<int>;

namespace NameSpace1
{
    public class MyClass
    {
        public override string ToString()
        {
            return "You are in NameSpace1.MyClass.";
        }
    }
}

namespace NameSpace2
{
    class MyClass<T>
    {
        public override string ToString()
        {
            return "You are in NameSpace2.MyClass.";
        }
    }
}

namespace NameSpace3
{
    class MainClass
    {
        static void Main()
        {
            var instance1 = new AliasToMyClass();
            Console.WriteLine(instance1);

            var instance2 = new UsingAlias();
            Console.WriteLine(instance2);
        }
    }
}
// Output:
//    You are in NameSpace1.MyClass.
//    You are in NameSpace2.MyClass.

Visual Basic My ad alanını kullanma

Microsoft.VisualBasic.MyServices Ad alanı (MyVisual Basic) bir dizi .NET sınıfına kolay ve sezgisel erişim sağlayarak bilgisayar, uygulama, ayarlar, kaynaklar vb. ile etkileşim kuran kodlar yazmanızı sağlar. Başlangıçta Visual Basic ile kullanılmak üzere tasarlanmış olsa da, MyServices ad alanı C# uygulamalarında kullanılabilir.

ad alanını MyServices Visual Basic kullanma hakkında daha fazla bilgi için bkz. My ile geliştirme.

Projenizdeki Microsoft.VisualBasic.dll derlemesine başvuru eklemeniz gerekir. Ad alanı içindeki MyServices tüm sınıflar bir C# uygulamasından çağrılamayabilir: örneğin, FileSystemProxy sınıf uyumlu değildir. Bu özel durumda, VisualBasic.dll'de de bulunan öğesinin FileSystemparçası olan statik yöntemler kullanılabilir. Örneğin, bir dizini çoğaltmak için böyle bir yöntemin nasıl kullanılacağı aşağıda verilmiştir:

// Duplicate a directory
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(
    @"C:\original_directory",
    @"C:\copy_of_original_directory");

C# dili belirtimi

Daha fazla bilgi için bkz. C# Dil Belirtimindeyönergeleri kullanma. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Değiştirici kullanarak genel hakkında daha fazla bilgi için bkz. Genel kullanımlar özellik belirtimi - C# 10.

Ayrıca bkz.