SORU
7 Ocak 2009, ÇARŞAMBA


Gerçekten bir deneyin { return x; } finally { x = null; } deyimi ne olur?

Başka bir soru bu ipucu gördüm ve biri bana nasıl çalıştığını açıklayabilir merak ediyordum?

try { return x; } finally { x = null; }

Yani, finally fıkra gerçekten yürütmeksonrareturn deyim? Nasıl iş parçacığı güvenli değildir bu kod? W yapılabilecek herhangi bir ek hackery düşünebiliyor musunuz.r.t. bu 5* *hack?

CEVAP
7 Ocak 2009, ÇARŞAMBA


Son olarak deyim yürütülür, ancak dönüş değeri etkilenen değil. İcra emri:

  1. Return ifadesi önce kod yürütülür
  2. Geri bildirimde ifade değerlendirilir
  3. sonunda blok yürütülür
  4. Adım 2 sonuç değerlendirilir döndürdü

Burada göstermek için bir Kısa program:

using System;

class Test
{
    static string x;

    static void Main()
    {
        Console.WriteLine(Method());
        Console.WriteLine(x);
    }

    static string Method()
    {
        try
        {
            x = "try";
            return x;
        }
        finally
        {
            x = "finally";
        }
    }
}

Bu baskılar "" o geri döndü çünkü) ve sonra" x yeni değeri yok çünkü. "nihayet deneyin

Elbette, eğer geri dönen bir referans için bir değişken object (örneğin StringBuilder) sonra herhangi bir değişiklik için nesne sonunda blok olacak görünür getirisi - bu olmadı etkilenen dönüş değeri kendisi (sadece referans).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Police

    Android Poli

    21 NİSAN 2010
  • Drakinen

    Drakinen

    1 EYLÜL 2008
  • Samvith V Rao

    Samvith V Ra

    20 EKİM 2006