using yönergesi
usingYönergesi, bu türün tam ad alanını belirtmeden bir ad alanında tanımlanan türleri kullanmanıza olanak sağlar. Temel biçiminde using yönerge, aşağıdaki örnekte gösterildiği gibi, tüm türleri tek bir ad alanından içeri aktarır:
using System.Text;
Bir yönergeye iki değiştirici uygulayabilirsiniz using :
globalDeğiştirici,usingprojenizdeki her kaynak dosyasına aynı yönergeyi ekleme ile aynı etkiye sahiptir. Bu değiştirici C# 10 ' da tanıtılmıştır.staticDeğiştirici,staticbir ad alanındaki tüm türleri içeri aktarmak yerine üyeleri ve iç içe geçmiş türleri tek bir türden içeri aktarır. Bu değiştirici C# 6,0 ' de tanıtılmıştır.
Statik üyeleri projenizdeki tüm kaynak dosyalarındaki bir türden içeri aktarmak için her iki değiştiricinizi birleştirebilirsiniz.
Ayrıca, bir ad alanı için bir diğer ad veya using diğer adı yönergesi içeren bir tür oluşturabilirsiniz.
using Project = PC.MyCompany.Project;
globalDeğiştirici bir using diğer ad yönergesinde kullanabilirsiniz.
Not
usingAnahtar sözcüğü Ayrıca, dosyalar ve yazı tipleri gibi nesnelerin doğru şekilde işlenmesini sağlamaya yardımcı olan using deyimleri oluşturmak için de kullanılır IDisposable . Using deyimleri hakkında daha fazla bilgi için bkz. using deyimleri.
usingDeğiştirici olmadan bir yönergenin kapsamı global göründüğü dosyadır.
usingYönerge şu şekilde görünebilir:
- Bir kaynak kodu dosyasının başlangıcında, herhangi bir ad alanı veya tür bildirimlerinden önce.
- Herhangi bir ad alanında, değiştirici kullanılmadığı takdirde, bu ad alanında belirtilen ad alanlarından veya türden önce,
globalyönergenin tüm ad alanı ve tür bildirimlerinden önce görünmesi gerekir.
Aksi halde, derleyici hatası CS1529 oluşturulur.
Ad using alanını belirtmek zorunda kalmadan bir ad alanındaki türleri kullanmak için bir yönerge oluşturun. Bir using yönerge, belirttiğiniz ad alanı içinde iç içe geçmiş herhangi bir ad alanına erişmenizi sağlar. Ad alanları iki kategoride gelir: Kullanıcı tanımlı ve sistem tanımlı. Kullanıcı tanımlı ad alanları kodunuzda tanımlı ad uzaylardır. Sistem tanımlı ad alanlarının listesi için bkz. .NET API Browser.
genel değiştirici
globalDeğiştiricinin değiştiricisini eklemek, using kullanmanın derlemedeki tüm dosyalara (genellikle bir proje) uygulanacağını gösterir. global usingYönerge C# 10 ' a eklenmiştir. Sözdizimi şöyledir:
global using <fully-qualified-namespace>;
Burada tam nitelikli ad uzayı, türlerine ad alanı belirtilmeden başvurulabilen ad alanının tam adı olan addır.
Genel bir using yönergesi herhangi bir kaynak kodu dosyasının başlangıcında görünebilir. global usingTek bir dosyadaki tüm yönergelerin önünde görünmesi gerekir:
usingDeğiştirici olmadan tüm yönergelerglobal.- Dosyadaki tüm ad alanı ve tür bildirimleri.
global usingHerhangi bir kaynak dosyasına yönergeler ekleyebilirsiniz. Genellikle, bunları tek bir konumda tutmak isteyeceksiniz. global usingYönergelerin sırası, tek bir dosyada veya dosyalar arasında değildir.
globalDeğiştirici değiştirici ile birleştirilebilir static . globalDeğiştirici, bir using diğer adı 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 belirtilen tüm yöntemlerin kullanılmasına izin vermez System.Math :
global using static System.Math;
Ayrıca, proje dosyanıza bir öğe ekleyerek genel olarak bir ad alanı ekleyebilirsiniz <Using> . Ö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 deyimlerini kullanır. .NET 6 önizlemesine zaten yükseltme yaptıysanız, 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,aşağıdaki SDK'ları kullanan projeler global using için bir dizi örtülü yönerge de ekler:
- Microsoft.NET.Sdk
- Microsoft.NET.Sdk.Web
- Microsoft .NET.Sdk.Worker
Bu örtülü global using yönergeler, proje türü için en yaygın ad alanlarını içerir.
statik değiştirici
using staticYönergesi statik üyeleri ve iç içe geçmiş türleri bir tür adı belirtmeden erişebileceğiniz bir türü adlandırır. using staticYönerge C# 6 ' da tanıtılmıştı. Sözdizimi şöyledir:
using static <fully-qualified-type-name>;
, <fully-qualified-type-name> Statik üyeleri ve iç içe türlerine bir tür adı belirtilmeden başvurulabilen türün adıdır. Tam nitelikli tür adı (tür adıyla birlikte tam ad alanı adı) sağlamazsanız, C# derleyici hatası oluşturur CS0246: "tür veya ad alanı adı ' Type/Namespace ' bulunamadı (bir using yönergesi veya derleme başvurunuz eksik olabilir mi?)".
using staticYönergesi, örnek üyelerine de sahip olsa bile statik üyelere (veya iç içe türler) sahip her tür için geçerlidir. Ancak, örnek üyeleri yalnızca tür örneği aracılığıyla çağrılabilir.
Tür adıyla erişimi nitelemek zorunda kalmadan, bir türün statik üyelerine erişebilirsiniz:
using static System.Console;
using static System.Math;
class Program
{
static void Main()
{
WriteLine(Sqrt(3*3 + 4*4));
}
}
Genellikle, bir statik üye çağırdığınızda, tür adını üye adıyla birlikte sağlarsınız. Türün üyelerini çağırmak için aynı tür adının tekrar tekrar girilmesi, ayrıntılı ve belirsiz kod oluşmasına neden olabilir. Örneğin, bir sınıfın aşağıdaki tanımı, Circle sınıfını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); }
}
}
MathBir üyeye her başvurulilişinde, sınıfa açıkça başvuru ihtiyacını ortadan kaldırarak, using static yönerge temizleyici kodu ü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 erişilebilir statik üyeleri ve belirtilen türde tanımlanmış iç içe geçmiş türleri içeri aktarır. Devralınan Üyeler içeri aktarılmaz. using staticVisual Basic modüller dahil olmak üzere herhangi bir adlandırılmış türden yönergeyle içeri aktarabilirsiniz. F # en üst düzey işlevleri meta verilerde adı geçerli bir C# tanımlayıcısı olan bir adlandırılmış türün statik üyeleri olarak görünürse, F # işlevleri içeri aktarılabilir.
using static Uzantı yöntemi arama için belirtilen türde belirtilen uzantı yöntemlerini kullanılabilir yapar. Ancak, uzantı yöntemlerinin adları kodda nitelenmemiş başvuru için kapsama aktarılmaz.
Aynı ada sahip Yöntemler using static aynı derleme birimi veya ad alanı içinde farklı yönergelere göre farklı türlerden içeri aktarılmalıdır bir yöntem grubu. Bu yöntem grupları içindeki aşırı yükleme çözümlemesi normal C# kurallarını izler.
Aşağıdaki örnek using static Console ,, ve sınıflarının statik üyelerini Math String tür adlarını belirtmeye gerek kalmadan kullanılabilir hale getirmek için yönergesini kullanır.
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 türüne de uygulanmış olabilir Double . Bu yönergeyi eklemek, TryParse(String, Double) bir tür adı belirtmeden yöntemi çağırmayı mümkün hale getirir. Ancak, TryParse bir tür adı olmadan kullanılması, using static hangi sayısal tür yönteminin çağrıldığını belirleyen yönergeleri denetlemek için gerekli hale geldiği için, daha az okunabilir kod oluşturur TryParse .
using static türler için de geçerlidir enum . using staticSabit listesi ile ekleyerek, türü numaralama üyelerini kullanmak için artık 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 using tanımlayıcıyı bir ad alanına veya türe göre bulmayı kolaylaştırmak için bir diğer ad yönergesi oluşturun. Herhangi bir using yönergede, using bundan önce gelen yönergelerden bağımsız olarak tam ad alanı veya tür kullanılmalıdır. usingBir yönergenin bildiriminde diğer ad kullanılamaz using . Ö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 örnek, using bir ad alanı için bir diğer ad tanımlama ve kullanmayı gösterir:
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 takma ad yönergesi sağ tarafta açık genel bir türe sahip olamaz. Örneğin, için bir using diğer adı oluşturamazsınız List<T> , ancak bir için bir tane oluşturabilirsiniz List<int> .
Aşağıdaki örnek bir using sınıfın bir yönergesinin ve diğer adının nasıl tanımlanacağını göstermektedir using :
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.MyServicesad alanı ( My Visual Basic), bir dizi .net sınıfına kolay ve sezgisel erişim sağlar ve bu sayede bilgisayar, uygulama, ayarlar, kaynaklar vb. ile etkileşime geçmek için kod yazmanıza olanak tanır. başlangıçta Visual Basic ile kullanım için tasarlanmış olsa da, MyServices ad alanı C# uygulamalarında kullanılabilir.
Visual Basic ad alanını kullanma hakkında daha fazla bilgi için MyServices , bkz. ile geliştirme.
Projenizdeki Microsoft.VisualBasic.dll derlemesine bir başvuru eklemeniz gerekir. MyServicesAd alanındaki sınıfların hepsi bir C# uygulamasından çağrılabilir: Örneğin, FileSystemProxy sınıfı uyumlu değildir. Bu durumda, öğesinin parçası olan statik yöntemler FileSystem bunun yerine VisualBasic.dll de kullanılabilir. Örneğin, bir dizini yinelemek için bu 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 belirtiminde yönergeleri kullanma . Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.
Genel kullanma değiştiricisi hakkında daha fazla bilgi için bkz. Global kullanımlar özellik belirtimi-C# 10.