មេរៀន VC#.NET-Array និង Collection

មេរៀន VC#.NET-Array និង Collection
នុងជំពូកនេះនឹងរៀនអំពីរបៀប:
- ប្រកាស Declare, initialize, copy និងប្រើអថេរ array
-ប្រកាស Declare, initialize, copy និងប្រើប្រភេទអថេរ collection ។
1. អ្វីដែលទៅដែលហៅថា  Array?
array គឺជាធាតុមួយដែលគ្រប់ធាតុទាំងអស់មានក្នុង array គឺជា
ប្រភេទដូចគ្នា (មិនដូច fields ក្នុង struct ឬ class ដែលមានភាពខុសគ្នា) ។ ធាតុនៃ array ដែលមានផ្ទុកក្នុងបណ្តុំនៃ memory និងត្រូវបានអនុញ្ញាតប្រើ ចំនួនគត់ integer (មិនដូច fields ក្នុង struct ឬ class ដែលត្រូវបានអនុញ្ញាត ដោយឈ្មោះ) ។ array គឺមានលក្ខណ:ពិសេសដែលប្រើប្រាស់កាលណា កម្មវិធី ត្រូវការ handle និងរៀបចំ group items ដូចគ្នាក្នុងករណីនេះវាមានភាពរលូន និងថាមពលខ្លាំងខ្លាដែលបង្កើតអថេរដោយផ្ទាល់ខ្លួនឯង ។
ការប្រកាសអថេរ Array
អ្នកប្រើស្តង់ដាប្រភេទឈ្មោះដើម្បីប្រកាស declare array មួយ ។ អ្នក ប្រកាស declare ប្រភេទ array មួយនៅខាងឆ្វេងដោយសរសេរឈ្មោះនៃធាតុ តាមគូរនៃសញ្ញា square brackets ។ សរសេរនៅក្នុងសញ្ញា square brackets ដែលអថេរ គឺជា array ។ ឧទាហរណ៍ ដើម្បីប្រកាស declare array មួយះថេរចំនួនគត់ int ដែលហៅថា pins អ្នកនឹងសរសេរដូចនេះ :
int[] pins; // Personal Identification Numbers
បង្កើត Array Instance
Array គឺជាប្រភេទ reference មិនមានប្រភេទតំលៃ ។ នេះមានន័យថាអថេរ array ទៅតាម array instance នៅលើ heap (ដូចជា អថេរ class តាមប្រភេទ object នៅលើ heap) ។ កាលណាអ្នកប្រកាស declare អថេរ array មួយអ្នកមិនបង្កើត array instance ទៀតទេ ។ កាលណាអ្នកប្រកាស declare អថេរ class មួយអ្នកមិនបង្កើត class instance ទៀតទេ ។ Arrays និង classes គឺជាប្រភេទ reference ។ ដើម្បី បង្កើត array instance អ្នកសរសេរពាក្យ គន្លឹះ new keyword តាមឈ្មោះ នៃប្រភេទ element តាមទំហំរបស់ array អ្នកកំពុងបង្កើតរវាសញ្ញា square brackets ។ ឧទាហរណ៍ ដើម្បីបង្កើត array ថ្មីនៃបួនចំនួនគត់ integers អ្នក សរសេរដូចនេះ:
pins = new int[4];
តាមពិតលទ្ធផល អ្នកប្រើការបង្កើតកន្សោម array បង្កើតងថ្មីភ្លាមៗ ពេលនោះ array instance និងបាត់បង់ ។ ខាងក្រោមនេះជាឧទាហរណ៍:
ខាងក្រោមនេះជា diagram ដែលបង្ហាញពីការប្រើ
a
ទំហំនៃ array instance មួយអាចគណនាក្នុងពេល run time ។ វាមិនត្រូវការ compile-time constant ឧទាហរណ៍ខាងក្រោមនេះបង្ហាញ:
int size = int.Parse(Console.ReadLine());
int[] pins = new int[size];
ចាប់ផ្តើមអថេរ Array
កាលណាអ្នកបង្កើត array instance មួយដែលគ្រប់ធាតុទាំងអស់នៃ array instance ត្រូវបានចាប់ផ្តើមទៅក្នុងតំលៃ default អាស្រ័យទៅលើ
ប្រភេទរបស់វា:
­ ប្រភេទចំនួនបានសង់រួចស្រេច (ដូចជា int) ត្រូវបានចាប់ផ្តើមទៅ 0 ។ ការរាប់ត្រូវបានចាប់ផ្តើមទៅ 0 ផងដែរ ។
­ បណ្តាធាតុ ​bool ត្រូវបានចាប់ផ្តើមទៅ false ។
­ បណ្តាប្រភេទធាតុ ​Reference ត្រូវបានចាប់ផ្តើមទៅ null ។
តំលៃមិនជាទូទៅរវាងគូរនៃសញ្ញាអង្កត់វង់ក្រចក ។ ឧទាហរណ៍ ដើម្បី ចាប់ផ្តើម pins ទៅ array នៃតំលៃ4អថេរចំនួនគត់ int ដែលមានតំលៃគឺ 9, 3, 7 និង 2 អ្នកនឹងសរសេរដូចនេះ:
int[] pins = new int[4]{9, 3, 7, 2 };
តំលៃរវាងសញ្ញាអង្កត់វង់ក្រចកមិនមែនថេរ constants អាចប្រែប្រួល វាអាចមានតំលៃដែលអាចគណនានៅពេល run time ដែលហៅថា methods, ដូចដែលបង្ហាញក្នុងឧទាហរណ៍ខាងក្រោមនេះ:
Random r = new Random();
int[] pins = new int[4]{ r.Next() % 10, r.Next() % 10,
r.Next() % 10, r.Next() % 10 };
ចំនួននៃតំលៃរវាងសញ្ញាអង្កត់វង់ក្រចកត្រូវតែពិតប្រាកដជាក់ច្បាស់ ទំហំនៃ array instance ចាប់ផ្តើមបង្កើត:
int[] pins = new int[3]{ 9, 3, 7, 2 }; // compile time error
int[] pins = new int[4]{ 9, 3, 7 }; // compile time error
int[] pins = new int[4]{ 9, 3, 7, 2 }; // okay
កាលណាអ្នកកំពុងចាប់ផ្តើមអថេរ array មួយអ្នកអាចប្រើ syntax នេះ: សរសេរសញ្ញាក្បៀសតំលៃរវាងសញ្ញាអង្កត់វង់ក្រចក ឧទាហរណ៍ជំនួស សរសេរនេះ:
int[] pins = { 9, 3, 7, 2 };
ទោះបីជាយ៉ាងណាក័ដោយ shortcut នេះគ្រាន់តែធ្វើការសំរាប់ចាប់
ផ្តើម array ។ ប្រសិនបើអ្នកកំពុងតែផ្តល់អថេរ declared array រួចរាល់:
int[] pins = { 9, 3, 7, 2 }; // okay
pins = { 9, 3,? 7,? 2? };//compile? ti
me error
pins = new int[4]{ 9, 3, 7, 2 }; //okay
អ្នកអាចចាប់ផ្តើមទៅ struct នីមួយៗក្នុង array នៃ structs ដែលហៅ struct constructor ដូចដែលបង្ហាញដូចខាងក្រោមនេះ:
int[] pins = { 9, 3, 7, 2 };
អនុញ្ញាតចូលធាតុរបស់ Array
ដើម្បីអនុញ្ញាតចូលធាតុរបស់ array អ្នកសរសេរឈ្មោះនៃអថេរ array បន្ទាប់មកប្រើចំនួនគត់ integer នៃធាតុនោះអ្នកកំពុងតែអនុញ្ញាតចូលរវាង
សញ្ញាគ្នាប square brackets ។  Array គឺគោល zero-based ។ ធាតុចាប់ ផ្តើមនៃ array ដែលមាននៅក្នុង zero ។ ឧទាហរណ៍ខាងក្រោមនេះជា array យោងតាម pins អ្នកនឹងសរសេរដូចនេះ:
int myPin;
myPin = pins[2];
អ្នកអាចប្រើកន្សោមនេះក្នុងពេលអាន read ឬសរសេរ write context. ឧទាហរណ៍:
myPin = 1645;
pins[2] = myPin;
គ្រប់ធាតុ array ទាំងអស់អនុញ្ញាត bounds-checked ។ ប្រសិនបើ អ្នកប្រើចំនួនគត់ integer ដែលតំលៃតូចបំផុតគឺ 0 ឬធំជាងឬស្មើប្រវែងរបស់ array ។ ពេល compiler នឹងបោះចោល IndexOutOfRangeException ដូច ឧទាហរណ៍ខាងក្រោមនេះ:
try
{
int[] pins = { 9, 3, 7, 2 };
Console.WriteLine(pins[4]); // error, the 4th element is at index 3
}
catch (IndexOutOfRangeException ex)
{

}
វើឡើងវិញដោយឆ្លងកាត់ Array
 អ្នកអាចធ្វើសារឡើងវិញដោយឆ្លងកាត់បណ្តាធាតុរបស់ array ដែល
ប្រើ statement ។ code ឧទាហរណ៍ខាងក្រោមនេះសរសេរពីតំលៃធាតុ array ទៅ console:
int[] pins = { 9, 3, 7, 2 };
for (int index = 0; index != pins.Length; index++)
{
int pin = pins[index];
Console.WriteLine(pin);
}
Copy ចំលង Array
Arrays គឺជាប្រភេទ reference ។ អថេរនៃ array មួយមានផ្ទុក reference មួយដើម្បីបង្កើត array instance ។ នេះមានន័យថាកាលណាអ្នក copy អថេរ array មួយអ្នកបញ្ចប់ជាមួយពីរ references ដែលយោងទៅតាម array instance ដូចគ្នាឧទាហរណ៍:
int[] pins = { 9, 3, 7, 2 };
foreach (int pin in pins)
{
Console.WriteLine(pin);
}
ប្រសិនបើអ្នកចង់បង្កើត copy នៃ array instance ដែលអថេរ array មួយយោងទៅតាមវា អ្នកធ្វើពីរបញ្ហា ។ ទីមួយ អ្នកត្រូវការបង្កើត array instance ថ្មីនៃប្រភេទដូចគ្នានិងប្រវែង array​ដូចគ្នាអ្នកកំពុង copy ដូចក្នុង ឧទាហរណ៍នេះ:
int[] pins = { 9, 3, 7, 2 };
int[] alias = pins; // alias and pins refer to the same array instance
ប៉ុន្តែបើអ្នកប្តូរប្រវែងដើមរបស់ array អ្នកត្រូវចាំថាប្តូរទំហំនៃ copy ផង ដែរ វាប្រសើជាងកំណត់ប្រវែងនៃ array មួយដោយប្រើប្រវែងរបស់វា បង្ហាញ
ក្នុងឧទាហរណ៍ខាងក្រោម:
int[] pins = { 9, 3, 7, 2 };
int[] copy = new int[4];
បណ្តាតំលៃខាងក្នុង copy ឥឡូវនេះបានចាប់ផ្តើមទាំងអស់ទៅក្នុង តំលៃ default នៃ 0 ។ បញ្ហាទីពីរអ្នកត្រូវការធ្វើគឺបង្កើតតំលៃខាងក្នុង array ថ្មី ទៅតំលៃដូចគ្នាក្នុង array ដើម ។ អ្នកនឹងអាចធ្វើដូចនេះដោយប្រើ statement, ដូចបង្ហាញក្នុងឧទាហរណ៍ខាងក្រោមនេះ:
int[] pins = { 9, 3, 7, 2 };
int[] copy = new int[pins.Length];
for (int i = 0; i != copy.Length; i++)
{
copy[i] = pins[i];
}
ដើម្បីចង្អុលបង្ហាញពីគោលការណ៍នេះនិងពិចារណាពីការប្រតិ្តបត្តិបង្កើត  creating និង copying ចំលង array មួយដែលប្រភេទធាតុគឺជារបស់វាខ្លួនឯង ប្រភេទ reference ។ ឧទាហរណ៍ខាងក្រោមនេះបង្កើត array មួយនៃ 4 triangles:
Triangle[] triangles = new Triangle[4];
ប្រសិនបើ Triangle គឺជា class មួយដែលតួនាតី array instance ចាប់ផ្តើមក្នុងធាតុនីមួយៗគឺត្រូវបានចាប់ផ្តើមទៅ null ។ ម្យ៉ាងទៀត diagram statement ពីមុនមើលឃើញដូចនេះ ។
aឧបមាថាអ្នកបំពេញ triangles array ជាមួយ 4 Triangle objects ថ្មី ដែលមានដូចនេះ:
Triangle[] triangles = new Triangle[4];
for (int i = 0; i != triangles.Length; i++)
{
triangles[i] = new Triangle();
}
diagram នៃឧទាហរណ៍មានដូចខាងក្រោមនេះ:
aចុងក្រោយ ឧបមាថាអ្នកឥឡូវនេះបង្កើត copy មួយនៃ triangles array ដូចជា:
Triangle[] copy = new Triangle[triangles.Length];
for (int i = 0; i != copy.Length; i++)
{
copy[i] = triangles[i];
}
diagram នៃឧទាហរណ៍មានដូចខាងក្រោមនេះ:
a
ប្រើ System.Array Class
ហេតុអ្វីបានជាប្រភេទ int គឺជាប្រភេទតំលៃ; គ្រប់ structs ទាំងអស់គឺ ជាប្រភេទតំលៃ ។ ឧទាហរណ៍:
string rep = 42.ToString();
System.Array class ផ្គត់ផ្គង់ប្រវែងគ្រប់ arrays ទាំងអស់ ។ ម្យ៉ាងទៀត មិនមានភាពខុសគ្នារវាងពីរ statements:
int[] pips = new int[4]{ 9, 3, 7, 2 };
Array pips = new int[4]{ 9, 3, 7, 2 };
ទោះបីអ្នកបានឃើញ Array class ក្នុង code ។ ក្នុងគោលបំណង នាំប្រភេទ array ទាំងអស់ទៅក្នុងភាសារួមមួយ common language runtime (CLR) ។ ការចាប់ផ្តើមប្រើប្រាស់ shortcut មិនអាចធ្វើបានកាលណា ចាប់ផ្តើមអថេរ array មួយ :
int[] pips = { 9, 3, 7, 2};//okay
Array pips = { 9, 7, 3, 2};//compile time error
ឧទាហរណ៍កាលណាសរសេរ statement មួយទៅក្នុងធាតុ copy ក្នុង array មួយទៅ array ផ្សេងទៀត ។ អ្នកអាចប្រើ System.Array instance method ដែលហៅថា CopyTo ដែល copy ចំលងមាតិកានៃ array មួយទៅ
ក្នុង array ផ្សេងទៀត:
int[]pins = { 9, 3, 7, 2 };
int[]copy = new int[pins.Length];
pins.CopyTo(copy, 0);
មធ្យោបាយផ្សេងទៀតដើម្បី copy តំលៃទៅប្រើក្នុង System.Array static method ដែលហៅថា Copy ។ ដូចជាមួយ CopyTo  កំណត់ array ជាមុនពេលចាប់ផ្តើម Copy បង្កើត:
int[] pins = { 9, 3, 7, 2 };
int[] copy = new int[pins.Length];
Array.Copy(pins, copy, copy.Length);
ម្យ៉ាងទៀតដើម្បីផ្លាស់ប្តូរ System.Array instance method ហៅថា Clone ដែលអាចប្រើសំរាប់បង្កើត array ទាំងមូលនិង copy វាដើម្បីធ្វើ
សកម្មភាព:
int[] pins = { 9, 3, 7, 2 };
int[] copy = (int[])pins.Clone();
2. អ្វីទៅដែលហៅថា Collection Classes?
Arrays គឺជាមធ្យោយបាយតែមួយគត់ដើម្បីប្រមូលធាតុនៃប្រភេទដូចគ្នា ក្នុងកម្មធី Microsoft .NET Framework មាន namespace ដែលហៅថា System.Collections ដែលផ្ទុកច្រើនរាប់មិនអស់ classes ដែលមានមុខងារ សំរាប់ប្រមូលធាតុរួមទាំងអស់ ។ បណ្តា class ទាំងនេះផ្គត់ផ្គង់បង្កើតដំណោះ
ស្រាយរួចជាស្រេចគ្រប់ស្ថានភាព កាលណាអ្នកត្រូវការប្រមូលផ្តុំធាតុ ។
គ្រប់ collection classes ទាំងអស់អនុញ្ញាត  ដាក់និងត្រឡប់ចូល
ទៅក្នុងធាតុ របស់គេដូចជា object ។ ប្រភេទធាតុនេះគឺជាការប្រមូលផ្តុំនៃ class ដែល តែងតែមាន object (System.Object) ។
aអ្នកអាចបន្ថែមតំលៃចំនួនគត់ integer ទៅក្នុង array នេះ (តាមពិត អ្នកអាចបន្ថែមតំលៃនៃប្រភេទទៅអោយវា) ។ កាលណាអ្នកបន្ថែមចំនួនគត់មួយ វា automatically មាននៅក្នុងប្រអប់និងធាតុ array (object reference) យោងតាមប្រអប់ copy ដែលមានតំលៃចំនួនគត់ integer (សំរាប់សំណល់
សេសសស់ក្នុងប្រអប់) ។ ខាងក្រោមនេះគឺបង្ហាញពី diagram ។
a
បញ្ជី ArrayList
ArrayList គឺជាជំនួយ class សំរាប់ធាតុដែលនៅក្នុង array ។ អ្នកអាចធ្វើការគត់ចំណាំថាកាលណាកាត់បន្ថយ array:
¡ ប្រសិនបើអ្នកចង់ resize ទំហំ array ឡើងវិញអ្នកបង្កើត array ថ្មី រួច copy បណ្តាធាតុ (array ថ្មីគឺមានទំហំតូចជាង) រួចហើយ update array references ។
¡ ប្រសិនបើអ្នកចង់ប្តូរ remove ធាតុមួយពី array អ្នកបង្កើត copy មួយនៃធាតុរួចហើយបញ្ចូលទាំងអស់ទៅកន្លែងមួយ ។
¡ ប្រសិនបើអ្នកចង់បានបញ្ចូលធាតុមួយទៅក្នុង array អ្នកបញ្ចូលធាតុ
ទៅខាងក្រោមកន្លែងមួយដើម្បីបង្កើត free slot ។
¡ អ្នកអាច remove ធាតុមូយពី ArrayList ដោយប្រើ Remove method ។
¡ អ្នកអាចបន្ថែមធាតុមួយចុងបញ្ចប់នៃ ArrayList ដោយប្រើវា Add method ។ អ្នកគ្រាន់តែអនុវត្តធាតុដែលបានបន្ថែម ។ ArrayList ដឹងថាវាជា ប្រវែងកម្មសិទ្ធិនិង resize ទំហំដោយខ្លួនវាផ្ទាល់ប្រសិនបើចាំបាច់ ។
¡ អ្នកអាចបញ្ចូលធាតុទៅក្នុងពាក់កណ្តាលនៃ ArrayList ដោយប្រើ Insert method ។  ArrayList នឹង resize ទំហំរបស់វាឡើងវិញ ប្រសិនបើ ចាំបាច់ ឧទាហរណ៍ខាងក្រោមបង្ហាញពីរបៀបប្រើ ArrayList ដើម្បីសរសេរ ចំនួន 10 ឆ្លងទៅ 1 ទៅក្នុងសន្លឹក console:
using System;
using System.Collections;

ArrayList numbers = new ArrayList();

// fill the ArrayList
foreach (int number in new int[12]{10,9,8,7,7,6,5,10,4,3,2,1})
{
numbers.Add(number);
}

// remove first element whose value is 7 (the 4th element, index 3)
numbers.Remove(7);
// remove the element that’s now the 7th element, index 6 (10)
numbers.RemoveAt(6);

// iterate remaining 10 elements using a for statement
for (int i = 0; i != numbers.Count; i++)
{
int number = (int)numbers[i]; // Notice the cast
Console.WriteLine(number);
}

// iterate remaining 10 using a foreach statement
foreach (int number in numbers) // No cast needed
{
Console.WriteLine(number);
}
លទ្ធផលនៃកម្មវិធីនេះ
10
9
8
7
6
5
4
3
2
1
10
9
8
7
6
5
4
3
2
1
Queue
Queue class អនុវត្តក្នុងការប្រមូលផ្តុំ classic first-in first-out (FIFO) ។ ធាតុចូលរួម queue នៅពីក្រោយ (Enqueue) រួចហើយចាក
ចេញពី queue នៅពីមុខ (Dequeue) ។ ដូចជាមួយ ArrayList អ្នកត្រូវបាន បំពេញត្រួតពិនិត្យកន្លែងធាតុនៅខាងក្នុង Queue ។
ទីនេះជាឧទាហរណ៍នៃ queue ធ្វើប្រតិ្តបត្តិការណ៍:
using System;
using System.Collections;

Queue numbers = new Queue();

// fill the queue
foreach (int number in new int[4]{9, 3, 7, 2})
{
numbers.Enqueue(number);
Console.WriteLine(number + ” has joined the queue”);
}

// iterate through the queue
foreach (int number in numbers)
{
Console.WriteLine(number);
}

// empty the queue
while (numbers.Count != 0)
{
int number = (int)numbers.Dequeue();
Console.WriteLine(number + ” has left the queue”);
}
លទ្ធផលរបស់កម្មវិធីនេះ:
9 has joined the queue
3 has joined the queue
7 has joined the queue
2 has joined the queue
9
3
7
2
9 has left the queue
3 has left the queue
7 has left the queue
2 has left the queue
Stack Class
Stack class អនុវត្តក្នុងការប្រមូលផ្តុំ last-in first-out (LIFO) ។ ធាតុចូលរួម stack នៅខាងលើ top (Push) និងចាកចេញ stack នៅលើ top (Pop) ។
using System;
using System.Collections;

Stack numbers = new Stack();

// fill the stack
foreach (int number in new int[4]{9, 3, 7, 2})
{
numbers.Push(number);
Console.WriteLine(number + ” has been pushed on the stack”);
}

// iterate through the stack
foreach (int number in numbers)
{
Console.WriteLine(number);
}

// empty the stack
while (numbers.Count != 0)
{
int number = (int)numbers.Pop();
Console.WriteLine(number + “has been popped off the stack”);
}
លទ្ធផលរបស់កម្មវិធីនេះ:
9 has been pushed on the stack
3 has been pushed on the stack
7 has been pushed on the stack
2 has been pushed on the stack
2
7
3
9
2 has been popped off the stack
7 has been popped off the stack
3 has been popped off the stack
9 has been popped off the stack
Hashtable Class
using System;
using System.Collections;

Hashtable ages = new Hashtable();

// fill the SortedList
ages["John"] = 41;
ages["Diana"] = 42;
ages["James"] = 13;
ages["Francesca"] = 11;

// iterate using a foreach statement
// the iterator generates a DictionaryEntry object containing a key/value
pair
foreach (DictionaryEntry element in ages)
{
string name = (string)element.Key;
int age = (int)element.Value;
Console.WriteLine(“Name: {0}, Age: {1}”, name, age);
}
 លទ្ធផលរបស់កម្មវិធីនេះ:
Name: James, Age: 13
Name: John, Age: 41
Name: Francesca, Age: 11
Name: Diana, Age: 42
The SortedList Class
SortedList
array និងប្រភេទ ArrayList ជាមធ្យោបាយផ្តល់ទៅអោយទីតាំងនៃ ចំនួនគត់ integer index ទៅក្នុងធាតុ អ្នកផ្គត់ផ្គង់ចំនួនគត់ integer នៅក្នុង សញ្ញាគ្នាប square brackets (ឧទាហរណ៍ [4]) ក្នុងភាសាផ្សេងទៀតតែងតែ
ប្រមូលផ្តុំ array ។ SortedList class ផ្គត់ផ្គង់មុខងារដោយរក្សាទុកពីរ object arrays មួយសំរាប់ keys ដែលអ្នកកំពុងមើលពីមួយសំរាប់តំលៃដែលអ្នកកំពុង
បង្ហាញ។ keys array គឺជាមធ្យោបាយចែកចេញ (ដែលហៅថា SortedList)។
កាលណាអ្នកបញ្ចូលគូរ key/value ទៅក្នុង SortedList មួយ key ត្រូវបានបញ្ចូលទៅក្នុង keys array ក្នុងពេលកែតំរូវ index ដើម្បីរក្សាទុក keys array ។ តំលៃដែលបានបញ្ចូលក្នុងតំលៃ array នៅពេល index ដូចគ្នា  នេះមានន័យថាអ្នកអាចបញ្ចូល key/value ទៅក្នុង SortedList ។ មានសារ:សំខាន់សំរាប់ design:
¡ ភាពខុសគ្នាទៅ collection class ផ្សេងទៀត អ្នកមិនអាចត្រួត ពិនិត្យកន្លែងធាតុស្ថិតនៅក្នុង SortedList មួយ ។
¡ SortedList មិនអាចផ្ទុក duplicate key ។ ប្រសិនបើអ្នកហៅ Add method បន្ថែម key មួយដែលបង្ហាញរួចស្រេចក្នុង key array អ្នកនឹង ទទួលបាន exception មួយ ។ ទោះបីជាអ្នកប្រើសញ្ញាគ្នាប square
bracket កំណត់បន្ថែម key/value (មើលក្នុងឧទាហរណ៍ខាងក្រោម)។
¡ កាលណាអ្នកប្រើសំរាប់ statement នីមួយៗដើម្បីធ្វើឡើងវិញដោយ
ឆ្លងកាត់ SortedList អ្នកទទួលក្រោយពី DictionaryEntry ។
នេះជាឧទាហរណ៍មានសារ:សំខាន់:
using System;
using System.Collections;

SortedList ages = new SortedList();

// fill the SortedList
ages["John"] = 39;
ages["Diana"] = 40;
ages["James"] = 12;
ages["Francesca"] = 10;

// iterate using a foreach statement
// the iterator generates a DictionaryEntry object containing a key/value
pair
foreach (DictionaryEntry element in ages)
{
string name = (string)element.Key;
int age = (int)element.Value;
Console.WriteLine(“Name: {0}, Age: {1}”, name, age);
}
លទ្ធផលកម្មវិធីនេះគឺ:
Name: Diana, Age: 40
Name: Francesca, Age: 10
Name: James, Age: 12
Name: John, Age: 39
ប្រើ Collection Class ទៅ Play Card
មាន 52 cards ក្នុងប្រអប់ នេះគឺពិតប៉ុន្តែវាមើលមិនឃើញ card នឹងមិននៅក្នុងហ៊ូពីព្រោះវានឹងត្រូវបានចែក ប្រសិនបើអ្នកប្រើ array មួយ អ្នកនឹង record មាន array ប៉ុន្មានពិតនៅក្នុង PlayingCard ។ អ្នកនឹងសិក្សា code រួចសរសេរពីរ method: ទីមួយសាប់ប៊ៀក្នុងហ៊ូនិងមួយទៀត ដកប៊ៀ ពីក្នុងដៃទៅក្នុងហ៊ូ ។
ចែកប៊ៀ Deal the card
1. ចាប់ផ្តើមចូលក្នុង Microsoft Visual Studio .NET
2. បើក Aggregates project ទីតាំងក្នុង \MicrosoftPress\Visual C# Step by Step\Chapter 10\Aggregates folder ក្នុង My Documents folder របស់អ្នក ។ ពេលនោះ Aggregates project បានបើកឡើង ។
3. នៅលើ Debug menu ចុចលើ Start Without Debugging ។ Visual Studio .NET builds និងរត់ដំណើរការកម្មវិធី ។ Windows form មើលឃើញសន្លឹកប៊ៀក្នុងដៃនៃអ្នកលេងទាំងបួន (ជើង, ត្បូង, កើត, និងលិច) ។ មានពីរប៊ូតុង: មួយសំរាប់ចែកប៊ៀនិងមួយទៀតបក
ត្រឡប់ពីក្នុងហ៊ូ ។
4. ចុចលើ Deal នៅលើសន្លឹក Windows form ។ ប៊ៀ 52 សន្លឹកនៅ ក្នុងហ៊ូត្រូវបានចែកទៅក្នុងដៃអ្នកលេងទាំងបួនគឺ 13 សន្លឹកក្នុងដៃ
នីមួយៗ ។

Related product you might see:

Share this product :

Post a Comment

 
Support : Creating Website | Johny Template | Mas Template
Copyright © 2011. ទឹកអំពៅ - All Rights Reserved
Template Created by Creating Website Published by Mas Template
Proudly powered by Blogger