Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale aşağıdaki derleyici hatalarını kapsar:
- CS0138: Hata: Ad alanı kullanan yönergesi yalnızca ad alanlarına uygulanabilir; 'type', ad alanı olmayan bir türdür.
-
CS0431:
::kullanın.. - CS0432: Hata: Diğer ad 'tanımlayıcı' bulunamadı.
- CS0576: Hata: 'ad alanı' ad alanı, 'identifier' diğer adıyla çakışan bir tanım içeriyor.
-
CS0687: Hata: Ad alanı diğer ad niteleyicisi
::her zaman bir türe veya ad alanına çözümlendiğinden burada geçersizdir. Bunun yerine kullanmayı.göz önünde bulundurun. - CS1529: Hata: Using yan tümcesi, extern diğer ad bildirimleri dışında ad alanında tanımlanan diğer tüm öğelerden önce olmalıdır.
- CS1537: Hata: 'diğer ad' kullanma diğer adı daha önce bu ad alanında görünüyordu.
- CS7000: Hata: Diğer ad beklenmeyen şekilde kullanıldı.
-
CS7007: Hata: Yönerge
using staticyalnızca türlere uygulanabilir. Bunun yerine birusing namespaceyönerge düşünün - CS8083: Hata: Diğer ad nitelenmiş ad bir ifade değil.
- CS8085: Hata: Diğer ad bildirmek için 'using static' yönergesi kullanılamaz.
- CS8914: Hata: Genel kullanım yönergesi ad alanı bildiriminde kullanılamaz.
- CS8915: Hata: Genel kullanım yönergesi, genel olmayan tüm using yönergelerinin önünde olmalıdır.
-
CS9130: Hata: Diğer ad kullanmak bir
reftür olamaz. -
CS9131: Hata: Yalnızca kullanan diğer ad olabilir
unsafe. - CS9132: Hata: Diğer ad kullanmak null atanabilir bir başvuru türü olamaz.
-
CS9133: Hata:
staticdeğiştirici değiştiricidenunsafeönce olmalıdır. - CS9162: Tür 'statik kullanma' için geçerli değil. Yalnızca bir sınıf, yapı, arabirim, sabit listesi, temsilci veya ad alanı kullanılabilir.
Ve aşağıdaki derleyici uyarıları:
- CS0105: Uyarı: 'ad alanı' için kullanım yönergesi daha önce bu ad alanında görünüyordu.
-
CS0440: Uyarı: Adlı
globalbir diğer ad tanımlamak, her zaman bir diğer ad alanına değil genel ad alanına başvurdığındanglobal::, kötü bir şekilde bildirilir. - CS8019: Bilgi: Yönergesi kullanılarak gereksizdir.
- CS8933: Bilgi: Kullanım yönergesi daha önce genel kullanım olarak gösterildi.
Bu hatalar ve uyarılar yönergenin using doğru oluşturulmadığınızı gösterir. Aşağıdaki bölümlerde bu hatalar ve bunların nasıl düzeltilmesi gerektiği ele alınıyor.
Yönerge kullanma
yönergesi using , bir bildirimdeki diğer öğelerden veya dosyadaki herhangi bir namespacenamespace bildirimden önce olmalıdır. Daha sonra dosyaya bir using yönerge koymak, derleyicinin CS1529 hatasını üretmesine neden olur:
namespace UsingDirective;
public class MyClass
{
}
using System.Text.Json; // CS1529
Bu sorunu düzeltmek için, bildirimleri using dosyanın en üstüne veya ad alanının en üstüne taşıyın:
using System.Text.Json;
namespace UsingDirective;
public class MyClass
{
}
Derleyici, veya yönergesinden yinelenen yönerge için CS8933üretir.using Yinelenenleri kaldırabilirsiniz.
Bir using yönergenin , veya static değiştiricileriyle globalunsafeyanlış bir şekilde birleştirilmesiusing, bu makalenin devamında ele alınmıştır.
Statik yönerge kullanma
yönergesi using static , bir türün üyelerini geçerli ad alanına aktarır. Aşağıdaki örnek, gibi yöntemlerinden System.ConsoleWriteLine geçerli ad alanına aktarır:
using static System.Console;
Değiştiriciyi atlarsanız oluşturur:
using System.Console; // CS0138
Bir tür yerine ad alanını içeri aktaran değiştiriciyi eklerseniz derleyici CS7007static:
using static System; // CS7007
Simge uygun türlerden biri değilse, derleyici CS9162'yi yayar.
Değiştiriciyi static bir yönergedeki değiştiriciyle unsafe birleştirirseniz using , static önce değiştirici gelmelidir:
using static unsafe UnsafeExamples.UnsafeType;
Genel kullanım yönergesi
Yönerge global using , geçerli projedeki tüm kaynak dosyalarında ad alanını veya türü içeri aktarır:
global using System.Text;
Herhangi bir global using yönerge, bu kaynak dosyadaki genel olmayan using yönergelerin önüne girmelidir ve içine namespaceyerleştirilmemelidir. Bunun yapılması sırasıyla CS8915 ve CS8914'e neden olur.
Ayrıca, bir static global using yönerge bir dosya yerel türüne başvuramaz.
Diğer ad niteleyicisi
Diğer ad niteleyicisi, ::ad alanı diğer adının önüne geçer veya diğer adı izler global . Tam adın öğelerini ayırmak için nerede :: kullanılması gerektiğini kullanırsanız., derleyici CS0431, CS0432, CS0687, *CS7000 veya CS8083'lerden birini yayar.
Her durumda, öğesini ayırıcı ile :: değiştirin..
Buna ek olarak, adlı globalbir diğer ad tanımlarsanız, derleyici CS0440 sorununu giderir. Diğer global ad her zaman genel ad alanına başvurur. Diğer ad bildirme işe yaramaz ve diğer adınız için farklı bir ad seçmelisiniz.
Diğer ad çakışmaları
Bir ad alanına veya yönergesine sahip bir türe diğer adusing:
using JSON = System.Text.Json;
using ValueMap = System.Collections.Generic.Dictionary<string, decimal>;
using TimedData = (System.DateTime timeRecorded, decimal value);
Diğer ad için, önceki örneklerde oturum açmanın solundaki = ad olan benzersiz bir ad oluşturmayı denemelisiniz. Zaten bir Türe (örneğinObject) veya ad alanına (System) eşleyen bir ad kullanmak CS0576 veya CS1537'ye neden olabilir.
Diğer adları kullanma kısıtlamaları
C# 12'nin öncesinde, dil bir tür bildirimi için diğer ad oluşturan yönergelere using şu kısıtlamaları uygulardı:
Bir yönergeyle
using staticdiğer ad oluşturamazsınız:using static con = System.Console; using static unsafe ip = int*;
C# 12'ye başlayarak, bu kısıtlamalar kullanıma sunulmuştur:
Bir diğer ad kullanarak ,
inveyarefdeğiştiricilerini kullanamazsınızout:// All these are invalid using RefInt = ref int; using OutInt = out int; using InInt = in int;Yönerge
unsafe usingbir diğer ad veya belirtmelidirstatic using:// Elsewhere: public namespace UnsafeExamples { public unsafe static class UnsafeType { // ... } } // Using directives: using unsafe IntPointer = int*; using static unsafe UnsafeExamples.UnsafeType; using unsafe UnsafeExamples; // not allowedNull atanabilir başvuru türü için diğer ad oluşturamazsınız:
using NullableInt = System.Int32?; // Allowed using NullableString = System.String?; // Not allowed