Interfeys toifalari tushunchasi Interfeys toifalarni abstract bazaviy sinflar bilan taqqoslash Maxsus interfeyslarni kiritish
var nomTavs = from p in mahsulotlar select
Download 0.77 Mb.
|
MAVZULAR UMUMIY
- Bu sahifa navigatsiya:
- System.Array
- ToArray ()
var nomTavs = from p in mahsulotlar select
new { p.Nomi, p.Tavsifi }; foreach (var x in nomTavs) { // Nomi va Tavsifini bevosita ishlatish ham mumkin edi. Console.WriteLine(x.ToString()); } }//NomVaTavsifiniOlish Bu metodni Main() metodidan chaqirish quyidagi natijaga olib lkeladi: Nomlar va Tavsiflar: { Nomi = Kofe Pele, Tavsifi = Braziliya, 100 gr. } { Nomi = Nestle, Tavsifi = Sut, 1 litr } { Nomi = Avedov, Tavsifi = Pista yog'i, 1 litr } { Nomi = Hydrolife, Tavsifi = Suv, 10 litr } { Nomi = Fanta, Tavsifi = Ichimlik, 1.5 litr } { Nomi = Premium, Tavsifi = Plitka shokolad, 100 gram } Shuni unutmasligingiz lozimki, LINQ so’rovi proyekstiyani ishlatganida, uning asosida yotgan ma’lumotlarning toifasini aniqlashning biror bir imkoni yo’q, chunki u kompilyatsiya bosqichida aniqlanadi. Shu bois bunday hollarda var kalit so’zini ishlatish majburiydir. Undan tashqari, nooshkor toifalangan qiymat qaytaruvchi metodlarni yaratish mumkin emas. Shu bois quyidagi metod kompilyatsiya bo’lmaydi: static var ProyektsiyaQisminiOlish(MahsulotInfo[] mahsulotlar) { var nomiTavs = from p in mahsulotlar select new { p.Nomi, p.Tavsifi }; return nomiTavs; // Bu mumkin emas! } Agar proyekstiya qilingan ma’lumotlarni chaqiruv nuqtasiga qaytarish lozim (zarur) bo’lsa, yondashuvlarning biri LINQ so’rovi natijasini System.Array ob’yektiga ToArray() kengaytiruvchi metodidan foydalangan holda transformatsiya qilishni, ya’ni boshqa turga (toifaga) keltirishni nazarda tutadi. Masalan, ushbu metodni Main() metodidan chaqirish mumkin: // Endi qaytariluvchi qiymat Array ob'yektidir static Array ProyektsiyaQism(MahsulotInfo[] mahsulotlar) { var nomTavs = from p in mahsulotlar select new { p.Nomi, p.Tavsifi }; // Anonim ob'yektlar to'plamini Array ga aks ettirish return nomTavs.ToArray(); }//ProyektsiyaQism Main() dan quyidagicha chaqiriladi: Array objs = ProyektsiyaQism(omborTovarlari); foreach (object о in objs) { Console.WriteLine(о); //ToString() metodini har bir //anonim ob'yekt uchun chaqiradi } Ko’rib turganingizdek, bu yerda System.Array ob’yekti bevosita ishlatilishi kerak, bu yerda C# dagi massivni e’lon qilish sintaksisini qo’llash mumkin emas, chunki proyektsiya asosida yotgan toifa noma’lum, zero gap kompilyatorning o’zi generatsiya qiladigan anonym sinf haqida bormoqda. Undan tashqari umumlashgan ToArray Download 0.77 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling