1. Norton University Lesson 4 Subject ៖ VB.Net for Beginner
Academic year: 2014-2015 Page 1 Lecturer: Msc OU Bundeth
មេម ៀនទី ៤៖ Collection និង Generic
1 Array
Array គឺជាបណ្ុុំនន Character/String ដែលវាខុសគ្នាដែលលខ Index ។
2.1 Array One Dimension
Array Declaration:
Dim ArrayName(number) as DataType
Ex: Dim arr() as String={“A”,”C”,”D”,”B”}
Or Dim arr(3) as String
arr(0)=“A”
Arr(1)=“C”
arr(2)=“D”
arr(3)=“B”
Ex: For i as integer=0 to arr.length-1
MessageBox.Show(arr(i))
Next
Or For Each s As String in arr
MessageBox.Show(s)
Next
- Lbound : វាមាននាទីសុំរាប់ Return នូវ Index ែុំបូងរបស់ Array ។
- Ubound មាននាទីសុំរាប់ Return មកវិញនូវធាែុចុងលរោយរបស់ Array។
- Resized មាននាទីសុំរាប់ពរងីកធាែុរបស់ Array
- Reverse មាននាទីសុំរាប់រែលប់ធាែុរបស់ Array ។
- Sort មាននាទីសុំរាប់ែលរមៀបធាែុរបស់ Array ពីែូចលៅធុំ ។
Ex: Dim str() as String={“AB”,”AD”,”BA”,”ED”}
Array.Sort(str)
str.Reverse()
For i as integer =0 to Ubound(str)
MsgBox(str(i))
Next
- Redim and ReDim Preserve
+ ReDim
Ex: Dim str() as String={“AB”,”AD”,”BA”,”ED”}
ReDim str(1)
str(0)=“A”
str(1)=“B”
For Each s as String in str
MessageBox.Show(s)
Next
+ ReDim Preserve
Ex: Dim str() as String={“AB”,”AD”,”BA”,”ED”}
2. Norton University Lesson 4 Subject ៖ VB.Net for Beginner
Academic year: 2014-2015 Page 2 Lecturer: Msc OU Bundeth
ReDim Preseve str(1)
For Each s as String in str
MessageBox.Show(s)
Next
- Length ជា Properties ដែលវាអាច Return មកវិញនូវធាែុដែលចុំនួនដែល Array លនាោះមាន
2.2 Array Two Dimension
Array Declaration:
Dim ArrayName(,) as DataType={{,},{,},{,}}
- GetUpperBound មាននាទីសុំរាប់ទាញយក Indexចុងលរោយរបស់ Array លៅតាម Diamension ដែលកុំណែ់ ។
- Length មាន Return នូវ ចុំនួន Element ទាុំងអស់ ។
Ex:
Dim arr( , ) as String ={{“ID”,”Name”,”Phone”},{“001”,”Dara”,”099251675”}, {“002”,”Sok”,”017251675”}}
Dim result as String=“”
For i as integer=0 to arr.GetUpperbound(0)
Dim str as String=“”
For j as integer=0 to arr.GetUpperBound(1)
str += arr(I,j) + vbtab
Next
result += str + vbcrlf
Next
MessageBox.Show(result)
2. Collection
2.1 ArrayList
ArrayList អនុញ្ញាែ្ិលអាយអាករកាទុកធាែុជាលរចើនវាមានលកខណៈែូចលៅនឹង Array ដែរ ។ វាលអាយលយើងអាច បដនែមធាែុលៅ ោន់ទីតាុំងណាមួយក៏បានដែរល ើយអាកក៏អាច Remove ធាែុណាមួយលចញពីវាក៏បាន ។ ArrayList គឺជា Dynamic Structure ដែល អាចលុប បញ្ចូល … ។
លែើមបីបលងកើែ ArrayList ជាែុំបូងលយើងរែូវបលងកើែ Instance របស់វាលៅថា Object របស់ Class Array List ជាមុនសិនលទើបលរបើ Method និង Properties របស់វាបានលោយសារវាជា Instance Class ។
Syntax: Dim ArrayName as New ArrayList(number)
- រលបៀបរបោស និង បដនែមធាែុចូល ArrayList
Ex: Dim arrlist As New ArrayList(3)
arrlist.Add("A")
arrlist.Add("B")
arrlist.Add("C")
For Each s As String In arrlist
MessageBox.Show(s)
Next
- រលបៀបបដនែមធាែុលៅចលនាលោះ Index ណាមួយ
Ex1: Dim arrlist As New ArrayList(3)
arrlist.Add("A")
arrlist.Add("B")
3. Norton University Lesson 4 Subject ៖ VB.Net for Beginner
Academic year: 2014-2015 Page 3 Lecturer: Msc OU Bundeth
arrlist.Add("C")
arrlist.Insert(2, "E")
For Each s As String In arrlist
MessageBox.Show(s)
Next
Ex2: Dim arrlist As New ArrayList(3)
arrlist.Add("A")
arrlist.Add("E")
arrlist.Add("F")
Dim arr() As String = {"B", "C", "D"}
arrlist.InsertRange(1, arr)
For Each s As String In arrlist
MessageBox.Show(s)
Next
- រលបៀបលុបធាែុណាមួយលចញពី ArrayList
Ex: Dim arrlist As New ArrayList(3)
arrlist.Add("A")
arrlist.Add("E")
arrlist.Add("F")
Dim arr() As String = {"B", "C", "D"}
arrlist.InsertRange(1, arr)
arrlist.RemoveAt(3)
For Each s As String In arrlist
MessageBox.Show(s)
Next
- រលបៀប Sort ArrayList លែើមបី Sort ArrayList លោយលរបើរបាស់ Method Sort ។
ArrayList.Sort()
- រលបៀបរែលប់ Element របស់ ArrayList លែើមបី Sort ArrayListលោយលរបើរបាស់ Method Reverse ។
ArrayList.Reverse()
2.2 Hash Table
Hash Table មានលកខណៈែូចលៅនឹង ArrayList ដែរ ប ុដន្វាអនុញ្ញាែ្ិលអាយលយើងអាច Access ធាែុលោយលរបើ របាស់ Key រាល់ធាែុនីមួយៗ រែូវដែមានែុំនល (Value) និង key ។ែនមលលនោះរកាទុកែូចលៅនឹង ArrayList ដែរដែរគ្នន់ ដែ Index ជា Key វិញ មានន័យថាវាអាចជា String បាន ។
Syntax:
Dim HashtableName as New HashTable
Ex:
Dim htable As New Hashtable
htable.Add("Pen", "is the kind equivment of use in office")
htable.Add("Apple", "is the kind of friut")
htable.Add("Book", "is the paper that they compile it in a group of meaning")
For Each s As String In htable.Keys
4. Norton University Lesson 4 Subject ៖ VB.Net for Beginner
Academic year: 2014-2015 Page 4 Lecturer: Msc OU Bundeth
MessageBox.Show(“Key is ”+s+” Value is”+htable(s))
Next
ខាងលរោមលនោះជាោរ sort data លៅកាុង Hash Table ៖
Try
Dim htable As New Hashtable
htable.Add("b", "bbb")
htable.Add("y", "yyy")
htable.Add("a", "aaa")
Dim arrkey(htable.Count - 1) As String
Dim keys As ICollection = htable.Keys
keys.CopyTo(arrkey, 0)
Array.Sort(arrkey)
For Each s As String In arrkey
MessageBox.Show("Key is " + s + " Values is " + htable(s))
Next
Catch ex As Exception
MessageBox.Show((ex.Message))
End Try
3. Generic
3.1 List
អវីលៅជា List?
Listលៅកាុង VB.NET គឺជា Class ដែលសែិែលៅកាុង namespace System.Collection.Generic ។ List គឺជា dynamic arrays មានមុខងារែូចនឹង Array ដែរ ប ុដន្វាមានសមែែភាពលលើស array លោយអាចឱ្យលយើងបដនែម ឬ បនែយ element ល ើយមាន methods លរចើនជាងដែលលធវើឱ្យលយើងងាយរសួលកាុងោរលធវើោរជាមួយវា ។
ខាងលរោមលនោះជារូបបងាាញពី List របលភទ string List<string>
រចនា
លគ ទុំព័រ
កមមវិធីកុុំពយូទ ័រ
Game
ែបណា្ញ
ោរបលងកើែ
លែើមបីអាចលរបើ List បានែុំបូងអាករែូវរបោស object របស់ List លនាោះសិន Type របស់ List លនោះអាចជា Data Type (int, string, double) ឬ element លផេងលទៀែែូចជា Label, TextBox ។ល។
ខាងលរោមលនោះជាកូែសរមាប់របោស List។
Imports System.Collections.Generic
...
Dim skill As New List(Of Integer)
មុននឹងលរបើ List<T> លយើងរែូវ using System.Collections.Generic; ជាមុនសិន លទើបលយើងអាចលរបើកូែ List<T> បាន ។ បនាាប់មកខ្ុុំរបោស object មួយល្មោះ animal ជា List របលភទ string ដែលមានន័យថា object animal អាចរកាទុកែនមលដែលមានរបលភទជា string ។
5. Norton University Lesson 4 Subject ៖ VB.Net for Beginner
Academic year: 2014-2015 Page 5 Lecturer: Msc OU Bundeth
ឥឡូវសូមគិែពីកូែខាងលរោមលនោះ
Dim skill As New List(Of Label)
ោក់ែនមលចូល List
List ដែលលយើងបានបលងកើែខាងលលើគឺជា object ទលទមួយដែលមិនទាន់មានធាែុ ឬ ែនមលអវីលទ ។ លែើមបីរកាទុកែនមលកាុង List លយើងរែូវលរបើ method Add
skill.Add(“រចនា”) skill.Add(“លគ ទុំព័រ”) skill.Add(“កមមវិធីកុុំពយូទ ័រ”) skill.Add(“Game”) skill.Add(“ែបណា្ញ”)
លោយសារដែ List ដែលលយើងបលងកើែមានរបលភទជា string (List)ែូចលនោះ parameter របស់ method Add ក៏រែូវដែជា string ផងដែរ ។ ខាងលរោមលនោះជាោរបលងកើែ List របលភទជា int ៖
Dim number As New List(Of Integer)
number.Add(10)
number.Add(7)
List លធវើោរបានលអជាង និង ងាយរសួលលរបើជាង array លោយលយើងមិនបាច់របាប់ពីចុំនួន element ដែលលយើង ចង់ោក់លនាោះលទ ល ើយលយើងអាចបដនែមែនមលបានមិនកុំណែ់ ។ ោរលរបើ method Add លនាោះវានឹងបដនែមធាែុលៅដផាកខាង លរោយនន List ។ របសិនលបើអាកចង់បដនែមធាែុលៅ index ទី ១ ឬ index លផេងលទៀែលនាោះ អាកអាចលរបើ method Insert ។
skill.Insert(1, “ជួសជុលកុុំពយូទ ័រ”)
កូែខាងលលើលនោះនឹងោក់ធាែុមួយដែលមានែនមល “ជួសជុលកុុំពយូទ ័រ” លៅ index ទី ១ នន List skill ។
ទាញែនមលមកលរបើ និង ដកែនមលរបស់ List
សរមាប់ោរទាញែនមលពី List មិនលរបើ ឬ ដកគឺែូចនឹង array ដែរ លោយលយើងចាប់តាម index របស់ធាែុល ើយែនមល ណាដែល Add មុនលគសែិែលៅ index 0 ល ើយ Add ទី២ សែិែលៅ index 1 ។
skill(1) = “បលងកើែលគ ទុំព័រ” skill(2) = “បលងកើែកមមវិធីកុុំពយូទ ័រ” MsgBox(“ខ្ុុំចង់ោលយជាអាក” & skill(1) & “ និង អាក” & skill(2))
លុបែនមលលចញពី List<T>
លយើងអាចលុបធាែុណាក៏បានដែរ លោយលរបើ method Remove ឬ RemoveAt ។
method Remove ែរមូវឱ្យលយើងបញ្ញាក់ធាែុដែលចង់លុប
skill.Remove(“Game”)
ឯ method RemoveAt ែរមូវឱ្យលយើងបញ្ញាក់ index ននធាែុដែលចង់លុប
skill.RemoveAt(3)
បនាាប់ពីលុបរួច ធាែុ “ែបណា្ញ” នឹងធាលក់មកលៅ index ទី ៣ ។
លលើសពីលនោះ List មាននូវ methods ជាលរចើនលទៀែសរមាប់លុបែូចជា ៖ RemoveRange និង Clear ។
6. Norton University Lesson 4 Subject ៖ VB.Net for Beginner
Academic year: 2014-2015 Page 6 Lecturer: Msc OU Bundeth
skill.RemoveRange(1, 2)
កូែខាងលលើគឺលុបចាប់ពី index ទី ១ ល ើយលុប ២ ធាែុ (លនោះមានន័យថាលុប index ទី ១ និង ទី ២)
skill.Clear() „ លុបធាែុទាុំងអស់
ោរលរបើ List និង ផលរបលោជន៍
តាមរយៈអែែបទ និង កូែខាងលលើលោកអាកអាចបលងកើែ និង លរបើ List បានល ើយ ។ List ផ្ល់ឱ្យលោកអាកនូវ methods និង properties មួយចុំនួនលទៀែែូចជា Count, Contains, Reverse និង Sort ដែលនឹងជួយ សរមួលោរលរបើ List របស់ លោកអាក ។
- Count ជា properties សរមាប់រាប់ចុំនួនធាែុដែលមានកាុង List
Message.Show(“លយើងមានជុំនាញចុំនួន ” + skill.Count)
- Contains ជា method សរមាប់រកលមើលថាលែើ List មានែនមលដែលបានកុំណែ់ឬអែ់
If skill.Contains(“ែបណា្ញ”) Then
Message.Show(“អាកអាចសិកាជុំនាញលនោះបាន ។”)
End If
- Sort ជា method សរមាប់ែុំលរៀបធាែុកាុង List តាមែនមលពីែូចលៅធុំ
skill.Sort()
លោកអាកក៏អាចកុំណែ់របលភទជាលរចើនននោរែុំលរៀបលនោះលោយលរបើ Comparison ដែលខ្ុុំនឹងមិនបងាាញកាុងអែែបទលនោះលទ ។
លរៅពី methods ខាងលលើលនោះក៏មាននូវ methods ជាលរចើនលទៀែ ដែខ្ុុំសូមមិនបងាាញលនាោះលទ លររោះវាមានករមិែ លរៅ ។ លោយសារដែ List មានធាែុជាលរចើនលៅកាុងលនាោះ ែូចលនោះលយើងរែូវលរបើ Loop របសិនលបើលយើងចង់លធវើោរជាមួយ ធាែុទាុំងអស់ ។ ឧទា រណ៍របសិនលបើលយើងចង់បដនែមរកយ “អាក” លៅពីមុខែនមលននធាែុទាុំងអស់ ល ើយបងាាញវា
For i As Integer=1 To skill.Count
MessgeBox.Show(“អាក” & skill(i))
Next
កូែ for loop ខាងលលើលនោះងាយរសួលយល់សរមាប់អាក Programming ទូលៅ ប ុដន្វាមានលកខណៈយឺែជាងរបដ ល ២ែង លបើលរបៀបលធៀបជាមួយោរលរបើ foreach (សូមលមើលកូែ foreach ខាងលរោម)
For Each s In skill
MessgeBox.Show(“អាក” & s)
Next
ឥឡូវសាកចាប់លផ្ើមលរបើ List<T> ជុំនួស array កមមវិធីដែលអាកបលងកើែនឹងរែូវោរ memory ែិច ល ើយោរសរលសរកូែរបស់អាក នឹងងាយជាងមុន ។
3.2 Dictionary
អវីលៅជា Dictionary?
Dictionary គឺជា Class មួយដែលសែិែលៅកាុង namespace System.Collections.Generic; ។ Dictionary គឺវាមាន លកខណៈរសលែៀងលៅនឹងលៅនឹង List ដែរ ដែវាខុសគ្នាដែ Keys និង Index ចុំលរោះ List លយើងលរបើលលខសរមាប់លធវើជា Index ចុំដណកឯ Dictionary វាលរបើ Keys លធវើជា Index ែូចលនោះវាអាចផាុកបានែនមលជា String ក៏បាន ជាែនមលលលខ ឬ Object ក៏បាន។
អែែរបលោជន៍ននោរលរបើ Dictionary
Dictionary ផ្ល់ឱ្យលោកអាកនូវ methods និង properties មួយចុំនួនលទៀែ ែូចជា ៖ ContainsKey, ContainsValue, Remove, Keys, Values ល ើយវាក៏មានែួនាទីោ ង សុំខាន់ កាុងោរលរបើសរមាប់បលងកើែ Dictionary លោយសារវាមាន Key និង Value រសាប់មិនដែ ប ុលណាណោះវាមាន method រួចជាលរសច កាុងោរដសវងរកនូវ Key និង Value ណាមួយ ។ ខាងលរោមលនោះជារូបបងាាញពី Dictionary របលភទជា String, String