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

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012
  • pissengehen

    pissengehen

    26 EYLÜL 2006