SORU
26 EKİM 2014, Pazar


Adına sesleniyorum() derleme zamanı?değerlendirdi

C# 6 nameof() operatörü bir dize değişken ya da bir türünü içeren almak için kullanabilirsiniz.

Bu bazı Roslyn API üzerinden çalışma zamanında derleme ya da değerlendirilmektedir?

official discussion accepted answer dedicated post at my blog işaret nameof() operatör hakkında bilgi edinebilirsiniz. Here kullanım açıklaması ve bir örnek bulabilirsiniz.

CEVAP
26 EKİM 2014, Pazar


Evet. nameof() derleme zamanında değerlendirilir. Gözlük en son sürümünü bakarak:

Adına sesleniyorum ifadesi bir sabittir. Her durumda, (...) adına sesleniyorumderleme zamanında değerlendirilirbir dize üretmek için. Bağımsız çalışma zamanında değerlendirilir ve ulaşılamaz kod "ulaşılamıyor" uyarısı) kod. bir yayarlar değil (ancak kabul edilir

nameof operator - v5

Bu nereden this TryRoslyn example ile görebilirsiniz:

public class Foo
{
    public void Bar()
    {
        Console.WriteLine(nameof(Foo));
    }
}

Ve bu derlenmiş decompiled:

public class Foo
{
    public void Bar()
    {
        Console.WriteLine("Foo");
    }
}

Çalışma zamanı eşdeğeri:

public class Foo
{
    public void Bar()
    {
        Console.WriteLine(typeof(Foo).Name);
    }
}

Olarak bahsedilen açıklamalarda anlamına gelir o zaman kullanın nameof tür parametreleri bir genel tür yapmasını bekleme adı gerçek dinamik türü olarak kullanılan bir tür parametresi yerine sadece türü parametre adı. Bu yüzden:

public class Foo
{
    public void Bar<T>()
    {
        Console.WriteLine(nameof(T));
    }
}

Olacak bu

public class Foo
{
    public void Bar<T>()
    {
        Console.WriteLine("T");
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • krotoflik

    krotoflik

    26 ŞUBAT 2011
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011