Kompyuter ilmlari va dasturlashtirish


Mavzu: Kortejlar. Sanab o‘tiluvchi tur. Strukturalar



Yüklə 3,87 Mb.
səhifə8/15
tarix23.07.2023
ölçüsü3,87 Mb.
#119835
1   ...   4   5   6   7   8   9   10   11   ...   15
shernazarov Samandar (1)

Mavzu: Kortejlar. Sanab o‘tiluvchi tur. Strukturalar.

Kortejlar qiymatlar to'plamini qo'llab-quvvatlash uchun 7.0 versiyasidan boshlab C# da mavjud. Kortejlarning asosiy maqsadi bir nechta elementlarni soddalashtirilgan sintaksisga ega strukturaga umumlashtirishdir. Kortejlar System.ValueTuple turini talab qiladi. .NET Framework ning oldingi versiyalarida kortejlardan foydalanish uchun loyihangizga SystemValueTuple NuGet paketini qo'shishingiz kerak.


Tuplarning asosiy xususiyatlari:
kortejlar cheksiz miqdordagi elementlar bilan belgilanadi.
Kortejlar qiymat turidir.
Tuplelar = va != operatorlarini qo'llab-quvvatlaydi
Tuple qiymatlari umumiy maydonlardir.
Kortejlar C# 7.0 da qo'shilgan qiymatlar to'plami bilan ishlashning qulay usulini ta'minlaydi.
Tuple qavslar ichiga olingan qiymatlar to'plamini ifodalaydi:
var tuple = (5, 10);
Bunday holda, ikkita qiymatga ega bo'lgan kortej aniqlanadi: 5 va 10. Kelajakda biz ushbu qiymatlarning har biriga nomli maydonlar orqali kirishimiz mumkin:
Item[tupledagi_maydonning_seriya_raqami]
Misol:
var tuple = (5, 10);
Console.WriteLine(tuple.Item1); // 5
Console.WriteLine(tuple.Item2); // 10
tuple.Item1 += 26;
Console.WriteLine(tuple.Item1); // 31
Bunday holda, tur bevosita aniqlanadi. Ammo biz kortej o'zgaruvchisi uchun turni ham aniq belgilashimiz mumkin:
(int, int) tuple = (5, 10);
Kortej ikkita raqamni o'z ichiga olganligi sababli, tur ta'rifida ikkita raqamli turni ko'rsatishimiz kerak. Yoki to'plam ta'rifining yana bir misoli:
(string, int, double) person = ("Tom", 25, 81.23);
Bu holda kortejning birinchi elementi satr, ikkinchi element int, uchinchisi esa dubldir.
Shuningdek, kortej maydonlarini nomlashimiz mumkin:
var tuple = (count:5, sum:10);
Console.WriteLine(tuple.count); // 5
Console.WriteLine(tuple.sum); // 10
Endi, kortej maydonlariga murojaat qilish uchun Item1 va Item2 nomlari emas, balki ularning nomlari ishlatiladi.
Biz hatto bir qatorni alohida o'zgaruvchilarga ajratishimiz mumkin:
var (name, age) = ("Tom", 23);
Console.WriteLine(name); // Tom
Console.WriteLine(age); // 23
var tuple1 = (10, 23.4); Ikki qiymatli 10 va 23.4
Tuple qiymatlariga Item[raqam] tipidagi nomlari bo'lgan maydonlar orqali kirish mumkin, bu erda raqam kortejdagi qiymatning tartib raqamidir. Misol dasturini ko'rib chiqing:
static void Main(string[] args)
{
int tuple1 = (11, 33); Butun qiymatlar bilan kortejni aniqlash
Console.WriteLine(tuple1.Item1); // Konsol chiqishi 11
tuple1.Item2 *= 2; // Ikkinchi qiymatni 2 ga ko'paytirish
}
Har bir qiymat uchun turni aniqlash mumkin. Buning uchun qavs ichidagi kortej nomidan oldin har bir qiymat uchun turlar ko'rsatiladi.
(string, int) tuple = ("Coin", 25);
Kortejning har bir qiymati uchun alohida nom berish imkoniyati taqdim etiladi. Berilgan element nomi nomzod nomi deb ataladi. Bu boshqa aniq yoki yashirin kortej maydon nomining dublikati.
var tuple1 = (purchase:5, sale:10);
Console.WriteLine(tuple1.purchase);
O'zgaruvchilar kortejlarni aniqlash uchun ishlatilishi mumkin, ular yordamida keyingi operatsiyalarni bajarish mumkin.
var (purchase, sale) = (5, 10);
Console.WriteLine(Purchase);
Kortejlardan foydalanish
Kortejlar metodga parametr sifatida uzatilishi va qaytish natijasi sifatida xizmat qilishi mumkin. Xususan, agar usul faqat bitta qiymatni qaytarsa, natijada kortejni qaytarish juda qulay.
static void Main(string[] args)
{
var tuple1 = Method(); // Tuple1 kortejini qaytarish qiymatini belgilang
Console.WriteLine(tuple1.Item1);
Console.WriteLine(tuple1.Item2);
}
private static (int, int) Method() // Kortejni qaytarish usuli
{
var res = (5, 10);
return res;
} Quyidagi misolda kortej parametr sifatida metodga uzatiladi.
static void Main(string[] args)
{
var (purchase, sale) = Method ((5, 10), 3);
Console.WriteLine($"Purchase: {purchase} Sale: {sale}");
}
private static (int purchase, int sale) Method((int p, int s)tuple, int n)
{
var res = (purchase: tuple.p, sale: tuple.s + n);
return result;
} Tuple topshirig'i
Tuplar tayinlanish qobiliyatiga ega. Buning uchun ikkala kortej ham bir xil miqdordagi elementlarga ega bo'lishi kerak, tegishli qiymatlarning turlari mos kelishi yoki bir-biriga bevosita mos kelishi kerak. Qiymatlar ular paydo bo'lish tartibida belgilanadi. Tayinlashda maydon nomlari hisobga olinmaydi.
(int, int) tuple1 = (22, 12);
(double A, double B) tuple2 = (2.15, 3,02);
tuple2 = tuple1;
Tuple dekonstruksiyasi
Tuple dekonstruksiyasi - bu alohida o'zgaruvchilarga kortejning namunasini belgilash operatsiyasi.
var tuple = ("Alex", 36);
(string name, int age) = tuple;
//или
string name;
int age;
(name, age) = tuple;
Tenglik uchun kortejlarni tekshirish
var tuple1 = (23, 36);
var tuple2 = (17, 31);
Console.WriteLine(tuple1 == tuple2);
Console.WriteLine(tuple1 != tuple2);
Taqqoslashda maydon nomlari hisobga olinmaydi.
Kortejlarni solishtirish imkoniyati uchun shartlar:
Ikkala kortej ham bir xil miqdordagi elementlarni o'z ichiga oladi.
var limitsLookup = new Dictionary()
{
[2] = (4, 10),
[4] = (10, 20),
[6] = (0, 23)
};
if (limitsLookup.TryGetValue(4, out (int Min, int Max) limits))
{
Console.WriteLine($"Found limits: min is {limits.Min}, max is {limits.Max}");
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8


{
class Program
{
static void Main(string[] args)
{
{
var tuple = (5, 10);
Console.WriteLine(tuple.Item1);
Console.WriteLine(tuple.Item2);
tuple.Item1 += 26;
Console.WriteLine(tuple.Item1);

Console.ReadKey();


}
}
}
}




Yüklə 3,87 Mb.

Dostları ilə paylaş:
1   ...   4   5   6   7   8   9   10   11   ...   15




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə