SORU
8 Mayıs 2012, Salı


C lambda değişken kapsamı ne#?

Lambda değişken kapsamı konusunda kafası karışık, örneğin aşağıdaki almak istiyorum

var query = 
    from customer in clist
    from order in olist
    .Where(o => o.CustomerID == customer.CustomerID && o.OrderDate ==  // line 1
        olist.Where(o1 => o1.CustomerID == customer.CustomerID)        // line 2
             .Max(o1 => o1.OrderDate)                                  // line 3
    )
    select new {
        customer.CustomerID,
        customer.Name,
        customer.Address,
        order.Product,
        order.OrderDate
    };

Hat 1'de lambda değişken 'o tekrar beyan edemeyeceğim anlamına gelen' hat 2 (ya da en azından derleyici eğer edersem şikayet) ilan var Ama 3 satır bile olsa şikayet etmez 'o1' zaten var??

Lambda değişken kapsamı nedir?

CEVAP
8 Mayıs 2012, Salı


Parantez ipucu - lambda değişken bildirilen yere kapsamında yakalanan ver:

.Where(o => ... olist.Where(o1 => ...).Max(o1 => ...))
  //  |----------------------------------------------| scope of o
  //                       |---------|                 scope of first o1
  //                                      |---------|  scope of second o1

Hayır var unutmayın o1 iki değişken için üst üste, ama ikisi de (veya gölge) o değişken üst üste ve bu yüzden aynı ismi kullanamaz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Police

    Android Poli

    21 NİSAN 2010
  • grickle

    grickle

    22 AĞUSTOS 2006
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007