Aracılığıyla paylaş


Nasıl yapılır: Genel Ad Alanı Diğer Adlarını Kullanma (C# Programlama Kılavuzu)

Genel üye erişim yeteneği ad aynı ada sahip başka bir varlık tarafından gizlenmiş olabilir üye olduğunda yararlıdır.

Örneğin, aşağıdaki kodda, Console çözümler TestApp.Console çok yerine Console yazın System ad.

using System;
class TestApp
{
    // Define a new class called 'System' to cause problems. 
    public class System { }

    // Define a constant called 'Console' to cause more problems. 
    const int Console = 7;
    const int number = 66;

    static void Main()
    {
        // The following line causes an error. It accesses TestApp.Console, 
        // which is a constant. 
        //Console.WriteLine(number);
    }
}

Kullanarak System.Console hataya neden olur çünkü hala System ad sınıf tarafından gizli TestApp.System:

// The following line causes an error. It accesses TestApp.System, 
// which does not have a Console.WriteLine method.
System.Console.WriteLine(number);

Kullanarak bu hata ancak çalışabilirsiniz global::System.Console, aşağıdaki gibi:

// OK
global::System.Console.WriteLine(number);

Sol tanımlayıcı olduğunda global, sağ tanımlayıcısı için aramayı başlatır genel ad.Örneğin, aşağıdaki bildiriyi başvuruyor TestApp global alanda bir üyesi olarak.

class TestClass : global::TestApp

Şüphesiz, kendi ad alanlarý yaratmak'olarak adlandırılan System tavsiye edilmez, ve herhangi bir kod içinde oldu karşılaştığınız düşüktür.Ancak, daha büyük projelerde, bir form veya başka bir ad çoğaltma oluşabilir olasılığı da yüksektir olur.Bu durumda, genel ad alaný niteleyicisi kök ad belirtebilirsiniz, garantidir.

Örnek

Bu örnekte, ad System sınıf eklemek için kullanılan TestClass bu nedenle, global::System.Console kullanılmalıdır başvuru için System.Console tarafından gizli sınıf System ad.Ayrıca, diğer colAlias ad alanına başvurmak için kullanılan System.Collections; Bu nedenle, örneği bir Hashtable ad alanı yerine bu diğer adı kullanılarak oluşturulmuştur.

using colAlias = System.Collections;
namespace System
{
    class TestClass
    {
        static void Main()
        {
            // Searching the alias:
            colAlias::Hashtable test = new colAlias::Hashtable();

            // Add items to the table.
            test.Add("A", "1");
            test.Add("B", "2");
            test.Add("C", "3");

            foreach (string name in test.Keys)
            {
                // Searching the global namespace:
                global::System.Console.WriteLine(name + " " + test[name]);
            }
        }
    }
}
  

Ayrıca bkz.

Başvuru

Ad Alanları (C# Programlama Kılavuzu)

. İşleci (C# Başvurusu)

:: İşleci (C# Başvurusu)

extern (C# Başvurusu)

Kavramlar

C# Programlama Kılavuzu