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

  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011
  • The Dubstep FX

    The Dubstep

    5 Mart 2011