var (C# başvurusu)
C# 3'den itibaren, yöntem kapsamında bildirilen değişkenler örtülü bir "tür" var içerebilir. Türü kendiniz bildirtiy gibi örtülü olarak türü kesin olarak yazarak bir yerel değişkene sahip olursunuz ancak türü derleyici belirler. Aşağıdaki iki bildirimi işlevsel i olarak eşdeğerdir:
var i = 10; // Implicitly typed.
int i = 10; // Explicitly typed.
Önemli
Null var değere değiştirilebilir başvuru türleri etkinken kullanılırsa, ifade türü null değerdilemez olsa bile her zaman null değere değiştirilebilir bir başvuru türü anlamına gelir. Derleyicinin null durum analizi olası bir değerin başvurulma durumuna karşı null koruma sağlar. değişkenini null olabilir bir ifadeye hiçbir zaman atanmamışsa, derleyici herhangi bir uyarı yaymaz. Değişkeni null olabilir bir ifadeye atarsanız, uyarılardan kaçınmak için değişkenin başvurulmadan önce null olmadığını test etmek gerekir.
anahtar sözcüğünün yaygın var kullanımları, oluşturucu çağırma ifadeleriyledir. kullanımı, aşağıdaki örnekte de olduğu gibi bir değişken bildiriminde ve nesne örneği oluşturmada bir tür var adını yinelemeyebilirsiniz:
var xs = new List<int>();
C# 9.0'dan başlayarak, alternatif olarak hedef new türüne sahip bir ifade kullanabilirsiniz:
List<int> xs = new();
List<int>? ys = new();
Desen eşleştirmede anahtar var sözcüğü bir desende var kullanılır.
Örnek
Aşağıdaki örnekte iki sorgu ifadesi gösterir. İlk ifadede, kullanımına izin verilir, ancak sorgu sonucu türü açıkça olarak belirtileye sahip olduğundan var gerekli IEnumerable<string> değildir. Ancak, ikinci ifadede, sonucun anonim türlerden bir koleksiyon olmasını sağlar ve bu türün adına derleyicinin kendisi var dışında erişilemez. kullanımı, var sonuç için yeni bir sınıf oluşturma gereksinimini ortadan kaldırıyor. Örnek 2'de yineleme foreach değişkeninin de item örtülü olarak yaz olması gerektiğini unutmayın.
// Example #1: var is optional when
// the select clause specifies a string
string[] words = { "apple", "strawberry", "grape", "peach", "banana" };
var wordQuery = from word in words
where word[0] == 'g'
select word;
// Because each element in the sequence is a string,
// not an anonymous type, var is optional here also.
foreach (string s in wordQuery)
{
Console.WriteLine(s);
}
// Example #2: var is required because
// the select clause specifies an anonymous type
var custQuery = from cust in customers
where cust.City == "Phoenix"
select new { cust.Name, cust.Phone };
// var must be used because each item
// in the sequence is an anonymous type
foreach (var item in custQuery)
{
Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}