Öğrenilecekler : Anonymous Types
Anonymous Types ne işe yarar ?
Anonymous Type'lar nesnenin tipini belirtmeden tanımlama yapmanızı(declaration) sağlar. ayrıca bakınız
Örnek :
// Anonymous Types declaration(tanımlaması)
var v = new { Amount = 108, Message = "Hello" };
// Usage Example
Console.WriteLine(v.Amount + v.Message);
Kullanım şekilleri, örnekleri :
1.) Çoğunlukla linq sorgularında select query'si kullanılır.
Örnek :
var productQuery =
from prod in products
select new { prod.Color, prod.Price }; // bu satıra dikkat
foreach (var v in productQuery)
{
Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price);
}
2.) Örnek kullanım :
var anonArray = new[] { new { name = "apple", diam = 4 }, new { name = "grape", diam = 1 }};
Yukarıda array tanımladık ve tipini belirtmedik.
3.) Diyelimlik tanımladığınız bir anonim tipin (anonymous type) daha sonra değerini değiştirmek istiyorsunuz. Ama bu mümkün değil (çünkü read only). Peki ne yapabiliriz ?
Örnek :
var apple = new { Item = "apples", Price = 1.35 };
var onSale = apple with { Price = 0.79 };
Console.WriteLine(apple);
Console.WriteLine(onSale);
With diyerek asıl objenin (apple) değerlerinden price'ına yeni değer atayarak onSale objesine atıyoruz. Dikkat ederseniz apple objesinin değerinde bir değişiklik olmadı (çünkü zaten read only).
4.) Örnek bir kullanım daha, pratik yaparak anlamanız için yazıyorum:
var apple = new { Item = "apples", Price = 1.35 };
var onSale = apple with { Price = 0.79 };
Console.WriteLine(apple);
Console.WriteLine(onSale);
var anonArray = new[] { new { name = apple,versiyon="v1"}, new { name = onSale ,versiyon="v2"} };
Console.WriteLine(anonArray[0]);
Console.WriteLine(anonArray[1]);
5.) Örnek bir kullanım daha, pratik yaparak anlamanız için yazıyorum :
List<string> list1 = new List<string>() { "a", "b", "c" };
List<string> list2 = new List<string>() { "c", "d", "e" };
var newList = new[] { list1, list2 }.ToList();
System.Console.WriteLine(newList[0][0]); //a
System.Console.WriteLine(newList[0][1]); //b
System.Console.WriteLine(newList[0][2]); //c
System.Console.WriteLine(newList[1][0]); //c
System.Console.WriteLine(newList[1][1]); //d
System.Console.WriteLine(newList[1][2]); //e
Top comments (0)