C# 3.0 ile gelen özelliklerden biri de Implicitly Typed Local Variable. Bu özellik ile değişkenlerimizi artık "var" anahtar kelimesiyle tanımlayabiliyoruz. Compiler hangi tipte bir değişken olduğunu belirlemek için tanımlamanın sağ tarafına bakıyor. Kullanımı built-in type, anonymous type, user-defined type veya  .NET Framework kütüphanesinden bir class olabilir. Açık bir şekilde veri tipiyle tanımlamayla arasında hiç bir fark yok. Peki neden açıkça tipi yazmak yerine "var" kullanayım derseniz anonymous type'lar sadece var ile gösterilebilir ve bunu linq deyimlerinde kullanacağız. Ayrıca "var" daha az kod yazmanızı sağlıyor. Uzun ve karmaşık tiplerde kolaylık sağlıyor.

int sayi = 7;  // explicitly 
var sayi = 7;  // implicitly 

List<int> liste = new List<int>();  // explicitly
var liste = new List<int>();        // implicitly

       Implicitly Typed Local Variable'ın asıl çıkış nedeni olan anonymous type'ın bir örneğini görelim.

var urun = 
    from u in urunler
    select new { u.Fiyat, u.Cins , u.Ad };

foreach (var v in urunler)
{
    Console.WriteLine("Fiyat={0},Cins={1},Ad={2}",v.Fiyat,v.Cins,v.Ad);
}

       select new ile anonymous type kullanmış olduk, bu deyimi başka bir tipde yaratamazdık. Ama select new kullanmadan başka bir deyim yazsaydık var kullanmak yerine değişkenin tipini IEnumerable<string> gibi bir tip kullanabilirdik. Anonymous type kullanınca "var" kullanmamız gerekiyor.

       Implicitly Typed Local Variable kullanırken bazı kurallara uymamız gerekiyor. Değişkeni tanımlarken ilk değerini kendisine eşitlememiz gerekiyor ki compiler hangi türde yaratabileceğini bilsin. Ve bir de örneğin bir sayı olarak değişken tanımlayıp daha sonra string'e eşitleyemezsiniz. Son olarak da "var" ı sadece local olarak kullanabilirsiniz.