Lug'atlar boshqa keng tarqalgan to'plam turidir. Lug'at kalit-qiymat juftligini ifodalovchi ob'ektlarni saqlaydi. Dictionary< K , V> lug'at klassi ikki turga bo'linadi: K parametri kalit turini, V parametri esa qiymat turini beradi.
Lug'at yaratish va ishga tushirish
Lug'at sinfi lug'at yaratish uchun bir qancha konstruktorlarni taqdim etadi. Masalan, biz bo'sh lug'at yaratishimiz mumkin:
Bu erda lug'at peopleint qiymatlarini kalit sifatida va satrlarni qiymat sifatida qabul qiladi.
Lug'atni belgilashda uni darhol qiymatlar bilan ishga tushirishingiz mumkin:
1
2
3
4
5
6
|
var people = new Dictionary()
{
{ 5, "Tom"},
{ 3, "Sam"},
{ 11, "Bob"}
};
|
Initsializatsiya paytida initsializator ishlatiladi - konstruktorni chaqirgandan so'ng jingalak qavslarda dastlabki ma'lumotlar ob'ektga uzatiladi. So'z bo'lsa, biz inisializerga elementlar to'plamini o'tkazishimiz mumkin, bu erda har bir element jingalak qavslar ichiga olinadi, masalan:
Har bir element ikkita qiymatni ifodalaydi: birinchi qiymat kalitni, ikkinchi qiymat element qiymatini bildiradi. Odamlar lug'atini e'lon qilishda kalitlar turdagi intva qiymatlar turdagi bo'lganligi stringsababli, lug'at elementi avval int raqamini, keyin esa qatorni belgilaydi. Ya'ni, yuqoridagi holatda, element 5 kalitiga ega va qiymat "Tom" dir. Keyin elementning kalitidan element qiymatini olishimiz mumkin.
Biz ishga tushirishning boshqa usulidan ham foydalanishimiz mumkin:
1
2
3
4
5
6
|
var people = new Dictionary()
{
[5] = "Tom",
[6] = "Sam",
[7] = "Bob"
};
|
Ushbu ishga tushirish usuli bilan kalit kvadrat qavslar ichida ko'rsatiladi va elementning qiymati unga tayinlanadi. Ammo umuman olganda, bu ishga tushirish usuli avvalgisiga teng bo'ladi.
namespace Dictionery
{
class Lugat
{
RichTextBox rt;
Dictionary dn = new Dictionary();
public Lugat(RichTextBox rt) { this.rt = rt; }
public void Joylah(int n, string str)
{
if (!dn.ContainsKey(n))
dn.Add(n, str);
else { MessageBox.Show("Bu kalit mavjud"); return; }
}
public void Chop()
{
foreach (var i in dn)
rt.Text += (i.Key + " " + i.Value + "\n");
}
public void Deletete_key(int n)
{
dn.Remove(n);
Chop();
}
public bool Key_Find(int n)
{
return dn.ContainsKey(n);
}
public bool Value_Find(String str)
{
return dn.ContainsValue(str);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Dictionery
{
public partial class Form1 : Form
{
Lugat ob;
public Form1()
{
InitializeComponent();
ob = new Lugat(richTextBox1);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
ob.Joylah(Convert.ToInt32(textBox1.Text), textBox2.Text);
}
private void button2_Click(object sender, EventArgs e)
{
ob.Chop();
}
private void button3_Click(object sender, EventArgs e)
{
ob.Deletete_key(Convert.ToInt32(textBox3.Text));
}
private void button4_Click(object sender, EventArgs e)
{
if (ob.Key_Find(Convert.ToInt32(textBox4.Text)))
MessageBox.Show("Mavjud");
else MessageBox.Show("Mavjud emas");
}
private void button5_Click(object sender, EventArgs e)
{
if (ob.Value_Find(textBox5.Text))
MessageBox.Show("Mavjud");
else MessageBox.Show("Mavjud emas");
}
}
}
Do'stlaringiz bilan baham: |