វីហ្សួលបេហ៊្សិក.ណេត

**វីហ្សួលបេហ៊្សិក.ណេត** (**VB.NET**) គឺជាភាសាកម្មវិធីគណនូបករណ៍តម្រង់វត្ថុ (object) ដែលបានបង្ហាញឱ្យឃើញនូវការវិវត្តនៃវីហ្សួលបេហ៊្សិកសម័យមុន (VB) ដែលធ្វើបូរណកម្មលើក្របខណ្ឌ.ណេត។ ម៉ៃក្រូសូផ្វថ្មីៗផ្ដល់នូវការរៀបរៀងថ្មីពីរសំខាន់ៗនៃ បអស (IDEs) ដើម្បីការអភិវឌ្ឍក្នុងវីហ្សួលបេហ៊្សិក: ម៉ៃក្រូសូផ្វវីហ្សួលបេហ៊្សិកស្ទីដយោ ២០១២ គឺជាគ្រឿងទន់ពាណិជ្ជកម្ម ហើយនិង វីហ្សួលបេហ៊្សិកអ៊ិខស្ប្រ៉ិសអ៊ិតឌីតហ្សឹន ២០១២ មិនបានគិតលុយឡើយ។ អង្គចងក្រងបញ្ជាជួរអក្សរ VBC.EXE ត្រូវបានតំឡើងជាផ្នែកនៃគ្រឿងឥតគិតថ្លៃ ក្របខណ្ឌ.ណេតអិសឌីខេ។ ម៉ូណូក៏បានបញ្ចូលអង្គចងក្រងវីប៊ី.ណេតបញ្ជាជួរអក្សរ (command-line) មួយដែរ។ កំណែថ្មីបំផុតគឺ VB ២០១២ ដែលត្រូវបានចេញផ្សាយនៅថ្ងៃ ១៥ សីហា ២០១២។

## កំណែ
មានកំណែនៃវីហ្សួលបេហ៊្សិក.ណេត៦បានធ្វើបូរណកម្មដោយក្រុមវីហ្សួលបេហ៊្សិក។

### វីហ្សួលបេហ៊្សិក.ណេត (២០០២) (VB ៧.០)
កំណែលើកទីមួយនៃ វីហ្សួលបេហ៊្សិក.ណេត រត់លើ ក្របខណ្ឌ​.ណេត១.០។  លក្ខណៈពិសេសសំខាន់បំផុតគឺជាក្រមគ្រប់គ្រង ខុសគ្នានឹងវីហ្សួលបេហ៊្សិក ៦.០ និងកាលពីមុន។

### វីហ្សួលបេហ៊្សិក.ណេត ២០០៣ (VB ៧.១) 
វីហ្សួលបេហ៊្សិក.ណេត ២០០៣ ត្រូវបានចេញផ្សាយជាមួយ កំណែ១.១ នៃក្របខណ្ឌ.ណេត។ លក្ខណៈពិសេសថ្មីៗរួមមានជំនួយដោយក្របខណ្ឌខំភែខ្ថ៍.ណេត និង ការតំឡើងថ្នាក់ VB កាន់តែល្អជាងមុន គឺ ជបឯង (វីហ្សាដ)។ ការរីកចម្រើនមួយចំនួនក៏ត្រូវបង្កើតឡើងផងដែរដើម្បីឱ្យមានការដំណើរការនិងភាពអាស្រ័យនឹង.ណេតអាយឌីអ៊ី (ជាពិសេស អង្គចងក្រងផ្ទៃក្នុង) និងពេលរត់។ ជាការបន្ថែម វីហ្សួលបេហ៊្សិក.ណេត ២០០៣ បានអនុញ្ញាតឱ្យប្រើប្រាស់នូវ *វីហ្សួលបេហ៊្សិកស្ទីដយោ.ណេតអាកាដឺមិកអ៊ីឌីតហ្សឹន* (VS03AE)។ VS03AE ត្រូវបានបរិច្ចាគដោយពួកអ្នកប្រាជ្ញមួយចំនួន មកពីគ្រប់ប្រទេសដោយគ្មានការចំណាយប្រាក់កាស។

### វីហ្សួលបេហ៊្សិក២០០៥ (VB ៨.០)
វីហ្សួលបេហ៊្សិក ២០០៥ គឺជាឈ្មោះ ដែលប្រើសំដៅទៅលើវីហ្សួលបេហ៊្សិក.ណេត ដែលពេលនោះម៉ៃក្រូសូផ្វបានសម្រេចចិត្តដាក់.ណេត (.NET) ជាបំណែកនៃឈ្មោះ។

សម្រាប់ការចេញផ្សាយនេះ ម៉ៃក្រូសូផ្វបានបន្ថែមលក្ខណៈពិសេសជាច្រើន រួមមាន:
* *Edit and Continue*
* ការវាយតម្លៃកន្សោមរចនាពេល។
*  *My* រហស្សៈ-លំហឈ្មោះ (ទិដ្ឋភាពទូទៅ សេចក្ដីលំអិត) ដែលផ្ដល់ឱ្យ:
** ងាយស្រួលចូលទៅបរិវេណខ្លះនៃក្របខណ្ឌ.ណេត ទន្ទឹមនឹងនោះតម្រូវឱ្យមានក្រមជាក់លាក់ដើម្បីចូលទៅ
** បានផលិតថ្នាក់តាមបែបថាមវន្ត (គួរអោយកត់សំគាល់នោះ *My.Forms*)
* ការបង្កើនសមត្ថភាពចំពោះអង្គបំលែង VB ទៅ VB.NET
* ពាក្យគន្លឹះ *Using*  សម្រួលការប្រើប្រាស់វត្ថុ (object)  ដែលត្រូវការគំរូបោះចោលដោយធនធានសេរី
* *Just My Code* ដែលនៅពេលការរកឩកាលាក់ (ឈានរំលង) ក្រមចានចំហុយ សរសេរដោយ  អាយឌីអ៊ី វីហ្សួលស្ទីដយ៉ូ.ណេត (IDE) និង ក្រមបណ្ណាល័យប្រព័ន្ធ
* ការចងបាច់ប្រភពទិន្នន័យ ដែលសម្រួលការអភិវឌ្ឍអតិថិជន/សេវាករមូលទិន្នន័យ

អនុគមន៍មួយចំនួនខាងលើ (ជាពិសេស "My") ទុកដើម្បីពង្រឹងការយកចិត្តទុកដាក់របស់វីហ្សួលបេហ៊្សិក.ណេតតាមរយៈវេទិកាអភិវឌ្ឍន៍អនុវត្តកម្មរហ័ស និង កាន់តែធ្វើឱ្យវាខុសប្លែកគ្នាពី C#។

វីហ្សួលបេហ៊្សិក ២០០៥ បានបញ្ចូលនូវលក្ខណៈពិសេសមានបំណងបំពេញចន្លោះប្រហោងរវាងខ្លួនឯង និង បណ្ដាភាសា.ណេត *ដែលមានឥទ្ធិពលខ្លាំង* ដទៃទៀត ការបន្ថែម:
* លក្ខណៈពិសេសនៃ បណ្ដាភាសា.ណេត ២.០ផ្សេងៗទៀតដូចជា:
** ជនតា
** ថ្នាក់ភាគ ប្រមាណវិធីកំណត់ភាគខ្លះនៃថ្នាក់មួយនៅក្នុងសំណុំសារមួយនិងក្រោយមកបន្ថែមនិយមន័យជា​ច្រើននៅពេលក្រោយ ជាពិសេស វាមានប្រយោជន៍ដោយសារការធ្វើសមាហរណកម្មក្រមអ្នកប្រើជាមួយក្រមដែលបានបង្កើត​ដោយស្វ័យប្រវត្តិ
** បន្ទុកលើសការី និង ប្រភេទទទេ
* ត្រូវនឹងប្រភេទទិន្នន័យចំនួនគត់គ្មានសញ្ញាណដែលបានប្រើជាទូទៅក្នុងភាសាដទៃទៀត

លក្ខណៈពិសេសមួយផ្សេងទៀតនៃវីហ្សួលបេហ៊្សិក ២០០៥ គឺ `IsNot` ការីដែលបង្កើត `'If X IsNot Y'` ស្មើទៅនឹង `'If Not X Is Y'`, ទទួលបានការទទួលស្គាល់ នៅពេលវាត្រូវបានគេបង្កើតឡើងជាកម្មវត្ថុនៃអនុវត្តកម្មប្រកាសនីយបត្រតក្កកម្មរបស់ម៉ៃក្រូសូផ្វ។

### វីហ្សួលបេហ៊្សិក ២០០៨ (VB ៩.០)
វីហ្សួលបេហ៊្សិក ៩.០ ត្រូវបានចេញផ្សាយរួមគ្នាជាមួយម៉ៃក្រូសូផ្វក្របខណ្ឌ.ណេត៣.៥នៅថ្ងៃ ១៩ វិច្ឆិកា ២០០៧។

ចំពោះការចេញផ្សាយនេះ ម៉ៃក្រូសូផ្វបានបន្ថែមលក្ខណៈពិសេសជាច្រើន រួមមាន:
* ការីលក្ខណ្ឌពិត "If(condition as boolean, truepart, falsepart)" ដើម្បីជំនួសអនុគមន៍ "IIf"។
* ពួកប្រភេទអនាមិក
* ត្រូវគ្នានឹងLINQ
* ពួកកន្សោមឡាំប្ដា
* ពួកអក្ខរXML
* បេយ្យាលៈប្រភេទ
* ពួកប្រមាណវិធីវិបុលកម្ម

### វីហ្សួលបេហ៊្សិក ២០១០ (VB ១០.០)
នៅខែ មេសា ២០១០ ម៉ៃក្រូសូផ្វបានចេញផ្សាយ វីហ្សួលបេហ៊្សិក ២០១០។ ម៉ៃក្រូសូផ្វបានចេញគ្រោងការដើម្បីប្រើពេលរត់ភាសាថាមវន្ត (DLR) សម្រាប់ការចេញផ្សាយនេះ ផ្ទុយទៅវិញបានផ្លាស់ប្ដូរទៅជាយុទ្ធសាស្ត្រសហវិវត្តន៍រវាងវីហ្សួលបេហ៊្សិក និង ភាសាបងប្អូន C# បាននាំមកនូវយុគភាពភាសាទាំងពីរកាន់តែជិតស្និទជាមួយភាសាដទៃមួយទៀត។ សមត្ថភាពពីកំណើតរបស់វីហ្សួលបេហ៊្សិកគឺធ្វើអន្តរកម្មថាមវន្តជាមួយបណ្ដាវត្ថុ CLR និង COM ដែលបានជម្រុញឱ្យមានការធ្វើការជាមួយភាសាថាមវន្តមួយចំនួនដែលបានសាងលើ DLR ដូចជា IronPython និង IronRuby។ អង្គចងក្រងវីហ្សួលបេហ៊្សិកបានបង្កើនសមត្ថភាពធ្វើអនុមានតំណជួរបន្ទាត់ក្នុងសំណុំនៃបរិបទទូទៅ ក្នុងករណីជាច្រើនដែលដកចេញតម្រូវការ "_" តួអក្សរតំណជួរបន្ទាត់។ ក៏មាន ការជួយដល់ពួកអនុគមន៍ក្នុងជួរបានបំពេញបង្គ្រប់ជាមួយការជួយរបស់ពួក អនុក្នុងជួរក៏ដូចគ្នានឹង កំណែពហុជួរនៃពួកអនុ និង អនុគមន៍ឡាំប្ដាដែរ។ 

### វីហ្សួលបេហ៊្សិក ២០១២ (VB ១១.០)
កំណែចុងក្រោយបង្អស់នៃវីហ្សួលបេហ៊្សិក.ណេត ប្រើប្រាស់ក្របខណ្ឌ.ណេត៤.៥។ Async Feature (លក្ខណៈពិសេសអសមកា),  Iterators (បុនប្បុនក្ការី), Call Hierarchy (ហៅឋានានុក្រម),  Caller Information (អង្គហៅព័ត៌មាន) និង Global Keyword (ពាក្យគន្លឹះសកល) ក្នុង បណ្ដាពំនោល Namespace (លំហឈ្មោះ) គឺជាលក្ខណៈពិសេសមួយចំនួនដែលបានបញ្ចូលក្នុងកំណែនៃ​ VB នេះ។

## ទំនាក់ទំនងទៅនឹងបណ្ដាកំណែចាស់ៗជាងគេនៃវីហ្សួលបេហ៊្សិក (VB៦ និង ពីមុនៗ)
''''*
តើវីហ្សួលបេហ៊្សិក.ណេតគួរតែចាត់ទុកថាគ្រាន់តែជាកំណែមួយផ្សេងទៀតនៃវីហ្សួលបេហ៊្សិក រឺក៏ ភាសាមួយដាច់ដោយឡែកពីគ្នា វានៅតែជាប្រធានបទនៃកិច្ចពិភាក្សាតទល់គ្នាដដែល។ ក្រៅពីនេះ ប្រមាណវិធីខ្លះត្រូវបានផ្លាស់ប្ដូរ និង ប្រមាណវិធីទាំងនោះអាចបំលែងដោយស្វ័យប្រវត្តិ វាក្យសម្ព័ន្ធគោលនៃភាសាមិនឃើញមានការផ្លាស់ប្ដូរច្រើន ដែល*ញែកឱ្យដាច់* ភាពឆបគ្នាឡើយ។ មាន ការបន្ថែមថ្មីខ្លះដើម្បីគាំទ្រដល់លក្ខណៈពិសេសថ្មី ដូចជាការចាប់យកអញ្ញត្រកម្មតាមរចនាសម្ព័ន្ធ និង បណ្ដាកន្សោមមានបរិថបខ្លីៗ។ ក៏មាន ការផ្លាស់ប្ដូរប្រភេទទិន្នន័យសំខាន់ពីរបានកើតមានរួមនិងការផ្លាស់ប្ដូរទៅជា VB.NET ផងដែរ : បើប្រៀបធៀបទៅនឹងVB៦ ប្រភេទទិន្នន័យ ` Integer (ចំនួនគត់)` ត្រូវបានកើនឡើងទ្វេដងនូវល្វែងពី ១៦ ប៊ីត ទៅ ៣២ ប៊ីត និងប្រភេទទិន្នន័យ  ` Long (វែង)` ត្រូវបានកើនឡើងទ្វេដងនូវល្វែងពី ៣២ ប៊ីត ទៅ ៦៤ ប៊ីត។ នេះជាការពិតចំពោះគ្រប់កំណែទាំងអស់នៃ VB.NET។ ចំនួនគត់១៦-ប៊ីតនៅគ្រប់កំណែទាំងអស់នៃ VB.NET ឥឡូវត្រូវបានគេស្គាល់ថាជា ` Short (ខ្លី)`។ តាមរយៈភាពស្រដៀងគ្នា អ្នករៀបរៀងGUIរបស់Windows Formsក៏មានភាពស្រដៀងគ្នាមែនទែនខាងរចនាបថនិងអនុគមន៍ទៅនឹងអ្នករៀបរៀងទម្រង់បែបបទវីហ្សួលបេហ៊្សិក។

កំណែនេះ មួយចំនួនបានប្រើសម្រាប់វីហ្សួលបេហ៊្សិកថ្មី (៧,៧.១,៨,៩, ...) ដែលសបញ្ជាក់ច្បាស់លាស់វាត្រូវបានបង្ហាញឱ្យឃើញតាមរយៈម៉ៃក្រូសូផ្វថា នៅតែជាផលិតផលចាំបាច់ដដែល ដូចគ្នាទៅនឹងវីហ្សួលបេហ៊្សិកចាស់ដែរ។​ 

អ្វីមួយចំនួនដែល *បាន* ផ្លាស់ប្ដូរជាក់លាក់គឺសញ្ញាន័យវិទ្យា— ដោយសារអ្វីៗក្នុងភាសាកម្មវិធីអាស្រ័យវត្ថុដែលរត់លើ វិស្វៈបច្ចយនិយម រាប់រំយោងមួយ វាបានពឹងផ្អែកលើCOM ទៅជា ភាសាតម្រង់វត្ថុពេញលេញនៅពីក្រោយដោយក្របខណ្ឌ.ណេត មានការប្រកបផ្សំចូលគ្នានៃពេលរត់ភាសាសាមញ្ញ (យន្តនិម្មិត្តប្រើប្រាស់ប្រជុំសំណល់តាមជនិតកម្ម និង វិស្វៈចំណងក្រងទាន់ពេល) និង បណ្ណាល័យថ្នាក់មួយធំជាងគេ។ ភាពទូលំទូលាយបានកើនឡើងមកទល់ពេលនេះក៏ជាបញ្ហាមួយដែលពួកអ្នកអភិវឌ្ឍ VB ត្រូវតែដោះស្រាយនៅពេលដែលវាកើតមានឡើងក្នុងភាសានេះ ទោះបីយ៉ាងណានេះជាអ្វីមួយដែលបានអាស្រ័យដោយលក្ខណៈពិសេស *My* ក្នុងវីហ្សួលស្ទីដយោ២០០៥។

បំលាស់ប្ដូរបានបំផ្លែងរូបមន្តគោលជាច្រើនឱ្យទៅជារូបមន្ត *ត្រឹមត្រូវ* ធ្វើការទាក់ទងនឹងប្រតិបត្តន៍និងតំហែភាព។ **អនុគមន៍និងបណ្ណាល័យខ្លះលែងមាន អនុគមន៍និងបណ្ណាល័យដទៃទៀតអាចប្រើបាន ប៉ុន្តែមិនមានប្រសិទ្ធិភាពដូចជម្រើស.ណេត *ដើម'' ឡើយ។ ទោះបីជាវាចងក្រងឡើង ក៏អនុវត្តកម្ម VB៦ ដែលបំលែងហើយភាគច្រើនត្រូវការបុនកត្តាការដើម្បីទាញយកអត្ថប្រយោជន៍ទាំងស្រុងពីភាសាថ្មីនេះ។ ឯកសារកម្មប្រើដើម្បីបិទបាំងបម្រែបម្រួលខ្លះក្នុងវាក្យសម្ព័ន្ធ អនូកាកិណ្ណការអនុវត្តកម្ម ការដាក់ឱ្យប្រើប្រាស់ និង បច្ចេកសព្ទវិទ្យា។

### ឧទាហរណ៍ប្រៀបធៀប
ឧទាហរណ៍សាមញ្ញជាបន្តបន្ទាប់ប្រៀបធៀបគ្នារវាង វាក្យសម្ព័ន្ធ VB និង VB.NET។ ឧទាហរណ៍នីមួយៗបង្កើតនូវប្រអប់សារ "Hello, World" មួយ ជាមួយនិងឆ្នុច OK ។

VB៦:

```vb
Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub
```

VB.NET (ថ្នាក់ MsgBox រឺ MessageBox អាចត្រូវបានគេប្រើ):

```vbnet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
    MessageBox.Show("Hello, World")
End Sub
```

*ទាំងវីហ្សួលបេហ៊្សិក៦ និង វីហ្សួលបេហ៊្សិក.ណេត ធ្វើជនិតកម្មដោយស្វ័យប្រវត្តិ ពំនោល `Sub` និង `End Sub` នៅពេលដែលឆ្នុចឆ្លើយតបត្រូវបានឃ្លិខក្នុងទិដ្ឋភាពរចនា។ វីហ្សួលបេហ៊្សិក.ណេតក៏នឹងធ្វើជនិតកម្មពំនោល `Class` និង `End Class` ដែលចាំបាច់ផងដែរ។ អ្នកអភិវឌ្ឍត្រូវការត្រឹមតែបញ្ចូលពំនោលនេះដើម្បីបង្ហាញប្រអប់សារ "Hello, World" តែប៉ុណ្ណោះ។
* ការហៅវិធានទាំងអស់ត្រូវបានធ្វើឡើងជាមួយរង្វង់ក្រចកក្នុង VB.NET រីឯក្នុង VB៦ ធ្លាប់មានអនុសញ្ញាផ្សេងៗសម្រាប់បណ្ដាអនុគមន៍ (រង្វង់ក្រចកតម្រូវឱ្យមាន) និង អនុ (គ្មានរង្វង់ក្រចកអនុញ្ញាត លុះត្រាតែបានហៅប្រើពាក្យគន្លឹះ `Call`) ។
* ឈ្មោះ `Command1` និង `Button1` វាមិនជាសំខាន់អ្វីទេ។ យ៉ាងណាក៏ដោយ ទាំងនេះគឺជាឈ្មោះដើមសម្រាប់ឆ្នុចបញ្ជាមួយក្នុង VB៦ និង VB.NET ដូចៗគ្នា។
* ក្នុង VB.NET ពាក្យគន្លឹះ `Handles` គឺត្រូវបានប្រើដើម្បីបង្កើត អនុ `Button1_Click` ជាអង្គចាប់ព្រឹត្តិការណ៍ `Click` នៃវត្ថុ `Button1`។ ក្នុង VB៦ ពួកអនុអង្គចាប់ព្រឹត្តិការណ៍ ត្រូវមានឈ្មោះជាក់លាក់ដែលឈ្មោះរបស់វត្ថុនេះគឺ ("Command1") បន្ទាត់ពីក្រោម ("_") និងឈ្មោះរបស់ព្រឹត្តិការណ៍ ("Click" ទៅជា "Command1_Click")។
* មានអនុគមន៍មួយហៅថា `MsgBox` ក្នុងលំហឈ្មោះ `Microsoft.VisualBasic` ដែលត្រូវបានគេប្រើស្រដៀងទៅនឹងអនុគមន៍ឆ្លើយឆ្លងគ្នាក្នុង VB៦ដែរ។ មានការមិនចុះសម្រុងគ្នាមួយចំពោះអនុគមន៍ណាមួយត្រូវប្រើជាប្រត្តិបត្តិកិច្ចល្អបំផុត (មិនត្រឹមតែរឹតបន្តឹងដើម្បីបង្ហាញប្រអប់សារប៉ុណ្ណោះទេ តែចាត់ទុកថាជាលក្ខណៈពិសេសផ្សេងៗនៃលំហឈ្មោះ `Microsoft.VisualBasic` ដែរ)។ ពួកអ្នកធ្វើកម្មវិធីចូលចិត្តធ្វើអ្វីៗតាមរយៈ "មធ្យោបាយ.ណេត" ដោយហេតុថាថ្នាក់មួយចំនួនរបស់ក្របខណ្ឌនេះមានលក្ខណៈពិសេសបន្ថែម និង ជាភាសាមានភាពច្បាស់លាស់តិច។ អ្នកដទៃលើកឡើងថាការប្រើប្រាស់លក្ខណៈភាសាជាក់លាក់ធ្វើឱ្យក្រមកាន់តែអាចអានបាន (ឧទាហរណ៍ដូចជា ការប្រើប្រាស់ `int` (C#) រឺ `Integer` (VB.NET) ជំនួសឱ្យ `System.Int32`)។
* ក្នុង VB ២០០៨ ការបញ្ចូលនៃ `ByVal sender as Object, ByVal e as EventArgs` ក្លាយជាមិនអាចអត់បាន។

ឧទាហរណ៍បន្តបន្ទាប់បង្ហាញនូវភាពប្លែកគ្នារវាង VB៦ និង VB.NET។ ឧទាហរណ៍ទាំងពីរ ដើម្បីបិទបង្អួចសកម្ម។

VB៦:

```vb
Sub cmdClose_Click()
    Unload Me
End Sub
```

VB.NET:

```vbnet
Sub btnClose_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClose.Click
    Me.Close()
End Sub
```

បុព្វបទ 'cmd'  ត្រូវបានជំនួសដោយបុព្វបទ 'btn'  ដែលរួមបង្កើតជាអនុសញ្ញាថ្មីដែលបានចែងកាលពីមុន។

វីហ្សួលបេហ៊្សិក៦មិនបានផ្ដល់ទម្រង់កាត់ខ្លីៗនៃការីទូទៅឡើយ។ ចំណុចបន្តបន្ទាប់គឺដូចគ្នា:

VB៦:

```vb
Sub Timer1_Timer()
    Me.Height = Me.Height - 1
End Sub
```

VB.NET:

```vbnet
Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
    Me.Height -= 1
End Sub
```

## ការរិះគន់
នៅពេលដាក់បញ្ចូលដំបូង ពួកអ្នកប្រើប្រាស់វីហ្សួលបេហ៊្សិកតាំងពីយូរមកហើយជាច្រើនបានត្អូញត្អែរអំពីវីហ្សួលបេហ៊្សិក.ណេតពីព្រោះតែកំណែដើមបានទម្លាក់ចោលនូវសំណង់ភាសាមួយចំនួនធំ និង លក្ខណៈពិសេសអន្តរៈផ្ទៃរបស់អ្នកប្រើប្រាស់ដែលធ្លាប់ជាភាគនៃVB៦ (លែងមានលក់ដោយម៉ៃក្រូសូផ្វទៀតហើយ) និងបានផ្លាស់ប្ដូរសញ្ញាន័យវិទ្យាដែលនៅសល់ ឧទាហរណ៍ដូចជា បរាមាត្ររបស់ VB.NET ត្រូវ (តាមកំណត់ដើម) បានបោះតាមតម្លៃ មិនមែនបោះតាមលំយោងទេ។ ពួកអ្នកបង្អាប់ហៅដោយចំអក VB.NET ថា *Visual Fred* រឺ *DOTNOT*។ ការត្អូញត្អែរធំមួយគឺថា * edit-and-continue * សមត្ថភាពដើម្បីកែឩកាដោយការកែប្រែក្រមប្រភពដើមក្នុងកម្មវិធីកំពុងតែរត់មួយនៅពេលវាបានផ្អាកនៅចំណុចញែក និង បន្តរត់ក្រម ត្រូវបានគេលុបបំបាត់ចោល: លក្ខណៈពិសេសនេះគឺជាជំនួយផលិតភាពសំខាន់មួយដែលទាក់ទាញពួកអ្នកអភិវឌ្ឍជាច្រើនទៅរក VB៦ វិញ។ 

ការផ្លាស់ប្ដូរជាច្រើនគឺចាំបាច់ពីព្រោះពួកគេត្រូវការឆ្លុះបញ្ចាំងឱ្យឃើញភាពខុសគ្នារវាង Windows Foundation Classes  និង បណ្ដាថ្នាក់ដែលស្មើគ្នាក្នុងក្របខណ្ឌ.ណេត (ឧ. ចំពោះការគ្រប់គ្រងអន្តរៈផ្ទៃអ្នកប្រើប្រាស់): បន្ថែមនោះ លក្ខណៈពិសេសបានផ្លាស់ប្ដូរខ្លះ ដូចជាការកំណត់ព្រំដែនសង្កាត់អថេរនៅនឹងកន្លែងទៅនឹងប្លុកដែលអថេរទាំងនោះត្រូវបានគេប្រកាស និង ការបោះបរាមាត្រតាមរយៈតម្លៃ (ដែលជាមធ្យោបាយមួយចំនួនតែប៉ុណ្ណោះអនុញ្ញាតក្នុង Java) ធ្វើឱ្យក្រមមានកំហុសតិចជាងមុន។ កាត់បន្ថយការបង្កកំហុសក៏ដូចជាយុត្តិកម្មដោយការដកចេញនូវលក្ខណៈពិសេសៗដូចជា gosub/goto ដែលបានគណនាហើយ និង ការលុបបំបាត់ចោលចំនួនបន្ទាត់ (ទាំងនេះជាកេរដំណែលនៃមរតក FORTRAN របស់ភាសា BASIC។) ជាទូទៅ គំនិតនេះត្រូវបង្កើតឱ្យមានបណ្ណាល័យ.ណេត ផ្ទុយស្រឡះពីបណ្ណាល័យភាសាជាក់លាក់ ធ្វើដំណើរការច្រើនបំផុត ដូច្នេះហើយក្រមដែលសរសេរក្នុង VB.ណេត រឺ Cទ្រុងជ្រូកនឹងត្រូវចងក្រងជាក្រមអន្តរមធ្យមស្ទើរតែដូចគ្នាទាំងអស់។ 

យ៉ាងណាក៏ដោយ ការផ្លាស់ប្ដូរសញ្ញាន័យវិទ្យាទាំងនេះភាគច្រើនមិនត្រឡប់ទៅជាមានភាពត្រូវគ្នាជាមួយក្រមដែលមានច្រើនស្រាប់ និង ក្រមដែលមានស្រាប់ត្រូវការសរសេរឡើងវិញ និង សាកល្បង ការខាតបង់សំខាន់មួយ ពេលតួនៃក្រម មានទំហំធំ។ តាមតែដែលអ្នកនិពន្ធ  ជអ៊ែល-ស្ភលស្គី បានកត់សំគាល់ថា "វាគឺជាលើកដំបូងហើយដែលការតំឡើងថ្នាក់របស់ ម៉ៃក្រូសូផ្វមិនគិតគូរដល់ការងារដែលពួកអ្នកប្រើបានប្រើប្រាស់កំណែមុននៃផលិតផលមួយ។" 

បអស វីហ្សួលស្ទីដយ៉ូ ពិតជាបានគាំទ្រកម្រិតនៃបំណកប្រែដោយស្វ័យប្រវត្តិទៅ VB.NET នៅពេលក្រម VB៦ ត្រូវបានបិទផ្អោបចូលទៅក្នុងវីហ្សួលស្ទីដយ៉ូ។ ផងដែរ អង្គចងក្រង VB.NET បានរាយការណ៍កំហុសជាច្រើន (រហូតដល់ចំណូលកំណត់ដោយអ្នកប្រើ - ឧ.ហ. កំហុស ១០០) ទាំងអស់ក្នុងពេលតែម្ដងជំនួសឱ្យម្ដងៗមួយៗ ជាមួយការកែកុនប្រភពកាត់បន្ថយបញ្ជីកំហុសនេះតាមរយៈដំណើរការការចងក្រងនៅផ្ទៃខាងក្នុង។ ទោះបីដូច្នេះ ការសម្របខ្លួនទៅនឹងVB.NET នៅតែពន្យារពេលរហូតដល់ឆ្នាំ២០០៥ នៅពេលដែលម៉ៃក្រូសូផ្វជាចុងក្រោយបានដាក់បញ្ចូល edit-and-continue វិញ: លក្ខណៈពិសេសនេះក៏ត្រូវបានបង្កើតឱ្យជាប្រយោជន៍ដល់ពួកអ្នកអភិវឌ្ឍស៊ីទ្រុងជ្រូកដែរ។ 

វាកាន់តែធម្មតាដើម្បីពន្លាបណ្ដាភាសាដែលតម្រង់ទៅភាសាអន្តរមធ្យមសាមញ្ញ (ភ.អ.ស.) រួមមានVB.NET ប្រៀបធៀបនឹងភាសាដែលចងក្រងដោយក្រមយន្ត។ ប្រដាប់ប្រដាដូចជា .NET Reflector អាចផ្ដល់ឱ្យនូវការប្រហាក់ប្រហែលជិតស្និទទៅនឹងក្រមដើមដោយសារតែចំនួនដ៏ច្រើននៃបច្ឆិមទិន្នន័យដែលផ្ដល់ក្នុងភ.ស.ស.។   នេះក៏ពិតដែរចំពោះកំណែដើមនៃវីហ្សួលបេហ៊្សិក (ពីមុនមកដល់ VB៥) ដែលមិនអាចចងក្រងទៅជាក្រមដើមឡើយ។

បណ្ដាកម្មវិធីវីហ្សួលបេហ៊្សិក៦.០ ដែលភាគច្រើនជាវិធាននព្វន្តក្នុងធម្មជាតិអាចត្រូវបានផ្លាស់ទីដោយលំបាកបន្តិចបន្តួច ប៉ុន្តែប្រភេទខ្លះនៃក្រមអាចមានបញ្ហាខ្លះ តាមឈ្មោះ : 
* ការទ្រទ្រង់មូលទិន្នន័យ: ក្របខណ្ឌរបស់.ណេតសម្រាប់ការចូលទៅកាន់មូលទិន្នន័យ អាឌីអូ.ណេត (ADO.NET) សង្កត់ធ្ងន់លើប្រតិបត្តិកម្មកាត់ផ្ដាច់ ដែលប្រើប្រាស់ធនធានមូលទិន្នន័យ-សេវាករសន្សំសំចៃតាមតែអាចធ្វើបានដោយការចេញផ្សាយនៅពេលគេមិនទាន់ប្រើ។  នេះហុចលទ្ធផលក្នុងក្រមកាន់តែអាចប្រែប្រួលទំហំជាង បើសិនជាបណ្ដា វត្ថុចំណូលទិន្នន័យ រឺ វត្ថុទិន្នន័យសកម្មX ពីមុនៗត្រូវបានប្រើ ក៏ ប៉ុន្តែក្រមនេះក៏កាន់តែស្មុគស្មាញ។
* រេខិយ: .ណេតមានបណ្ណាល័យថ្មី (ហើយកាន់តែមានអនុភាព) សម្រាប់បណ្ដារេខិយ។
* ប្រតិបត្តិកម្មមិនបានគ្រប់គ្រង: .ណេត, ដូចជា Java (ជ្វា) សង្កត់ធ្ងន់លើសន្តិសុខ ដូច្នេះក្រមមិនបានគ្រប់គ្រងត្រូវបានប្រើត្រឹមតែជាមធ្យោបាយចុងក្រោយបំផុត។

ភាពដោយឡែកគ្នានៃវាក្យសម្ព័ន្ធដទៃៗដែលទាក់ទងនឹងការផ្លាស់ប្ដូរបានធ្វើឡើងដើម្បីនាំយក  VB.NET ចូលជាបក្សសម្ព័ន្ធជាមួយភាសា.ណេតដទៃទៀត ដូចជារនៀបចាប់ពីសូន្យ (រនៀប.ណេតទាំងអស់មានសន្ទស្សន៍ ០ ដល់ n-1 រីឯរនៀប VB កាលពីដើមអាចចាប់ពីសូន្យ រឺ ចាប់ពីមួយ (សន្ទស្សន៍ 1 ដល់ n ) និងអញ្ញត្រកម្មរចនាសម្ព័ន្ធដែលចាប់យក (VB កាលពីដើមបានប្រើយន្តការ ON ERROR ជាគុណលក្ខណៈ) ដូច្នេះការផ្លាស់ប្ដូរពិបាក រឺ មិនមានលទ្ធភាពដើម្បីបំលែងដោយស្វ័យប្រវត្តិ ហើយអង្គបំលែងជាធម្មតាដោតទង់ក្នុងបរិវេណដែលមានបញ្ហាចំពោះការបំលែងជាហត្ថកម្ម។

ជាការបន្ថែម បណ្ណាល័យពេលរត់ដែលតម្រូវសម្រាប់កម្មវិធី VB៦ ត្រូវបានផ្ដល់ជាមួយWindows 98 SE និង លើនោះ ខណៈនោះដែរកម្មវិធី VB.NET តម្រូវឱ្យមានការតម្លើង .NET Framework ធំជាងមុនដែលពាក់ព័ន្ធនឹងគ្នា។ ក្របខណ្ឌត្រូវបានបញ្ចូលជាមួយ Windows 7, Windows Vista, Windows XP Media Center Edition, Windows XP Tablet PC Edition, Windows Server 2008 និង Windows Server 2003។ ចំពោះប្រព័ន្ធប្រតិបត្តិការដែលស៊ីគ្នាផ្សេងទៀតដូចជា Windows 2000 រឺ Windows XP (Home or Professional Editions) .NET Framework ត្រូវបានដំឡើងដាច់ដោយឡែកពីគ្នា។

ការឆ្លើយតបរបស់ម៉ៃក្រូសូផ្វទៅនឹងការមិនពេញចិត្តរបស់អ្នកអភិវឌ្ឍដោយផ្ដោតជុំវិញទៅលើការធ្វើឱ្យវាកាន់តែងាយស្រួលដើម្បីរំកិលខ្លួនទៅការអភិវឌ្ឍថ្មី និង ប្ដូរមូលក្រមដែលមានស្រាប់ ពី VB៦ ទៅ VB.NET។ ជំនូនមួយនៅឆ្នាំ ២០០៥គឺ ស្ថានីយសំណាញ់ រត់VB ផ្ដល់នូវសំណាកក្រមនិងអត្ថបទនានាចំពោះ:
* ការប្រើប្រាស់ VB.NET ដើម្បីបំពេញបន្ថែមរាល់ការងារដែលមានជាធម្មតាក្នុង VB ៦ ដូចជាការបង្កើតបុរេទិដ្ឋភាពបោះពុម្ព
* ការច្របាច់បញ្ចូលគ្នាដំណោះស្រាយរបស់ VB៦ និង VB.NET (បានឱ្យឈ្មោះថា *VB Fushion* )

## ការអភិវឌ្ឍឆ្លង-វេទិកា និង ប្រភព-បើក
ការបង្កើតនូវប្រដាប់ប្រដាប្រភព-បើកចំហសម្រាប់ការអភិវឌ្ឍ​របស់ VB.NET គឺវាយឺតយ៉ាវ បើប្រៀបធៀបទៅនឹងC# ទោះបីយ៉ាងណាវេទិកាអភិវឌ្ឍន៍ម៉ូណូ ផ្ដល់នូវបូរណកម្មនៃបណ្ណាល័យជាក់លាក់របស់ VB.NET និង អង្គចងក្រងដែលត្រូវគ្នានឹង VB.NET ៨.០ ដែលបានសរសេរក្នុងVB.NET  ដូចគ្នានឹងបណ្ណាល័យក្របខណ្ឌមាត្រដ្ឋានដូចជា បណ្ណាល័យ GUI របស់វីនដូផ្វម។

ឝាបដិវ៉ិលឡុប និង ម៉ូណូដិវ៉ិលឡុប គឺជា IDEឆ្លាស់គ្នារបស់ប្រភពបើកចំហ។

## ឧទាហរណ៍ 
ចំណុចបន្តបន្ទាប់គឺជាកម្មវិធី VB.NET ដ៏សាមញ្ញ កំណែនៃឧទាហរណ៍ *Hello world* ពីមុន ដែលបង្កើតជាអនុវត្តកម្មលើកញ្ចក់: 

```vbnet
Module Module1

    Sub Main()
        Console.WriteLine("Hello, world!")
    End Sub

End Module
```

ប្រសិទ្ធិភាពគឺដើម្បីសរសេរអត្ថក្សរ *Hello, world!* ដាក់ក្នុងបន្ទាត់បញ្ជា។ បន្ទាត់នីមួយៗប្រើជាប្រយោជន៍សំខាន់ ដូចតទៅ :

```vbnet
Module Module1
```

និយមន័យមត្តៈ មត្តៈគឺជាបំណែងចែកនៃក្រមដែលស្រដៀងនឹងថ្នាក់មួយ ទោះបីយ៉ាងណាបណ្ដាមត្តៈអាចមានបណ្ដាថ្នាក់ជាច្រើនក្នុងនោះផងដែរ។ មត្តៈប្រើជាកញ្ចប់ខ្ចប់ក្រមដែលយោងតាមប៉ែកដោយឡែកៗនៃកម្មវិធី។
វាគឺជាការអនុវត្តសាមញ្ញសម្រាប់មត្តៈ និង សំណុំសារក្រម ដែលនៅខាងក្នុងវា ត្រូវមានឈ្មោះដដែល យ៉ាងណាមិញ វាមិនតម្រូវឱ្យមានឡើយ ដូចគ្នានេះដែរ សំណុំសារក្រមតែមួយប្រហែលជាអាចមាននិយមន័យមត្តៈ និង/រឺ ថ្នាក់ ច្រើនជាងមួយ។

```vbnet
Sub Main()
```

នេះគឺជាចំណុចច្រកចូលដែលកម្មវិធីចាប់ផ្ដើមពហិសចតេកម្ម។ *Sub* គឺជាអក្សរកាត់នៃ "subroutine។"(ឧបបថ)

```vbnet
Console.WriteLine("Hello, world!")
```

បន្ទាត់នេះដំណើរកិច្ចការជាក់ស្ដែងនៃការសរសេរឧទយពុន្ទ។ *Console* គឺជាវត្ថុប្រព័ន្ធ ដែលតំណាងឱ្យអន្តរមុខបញ្ជាជួរអក្សរ និង ផ្ដល់ច្រកចូលនៃកម្មវិធីទៅកាន់ស្រោតាបទដ្ឋានរបស់ប្រព័ន្ធប្រតិបត្តិការ។ កម្មវិធីនេះហៅប្រមាណវិធីរបស់ *Console* ថា *WriteLine* ដែលធ្វើឱ្យមានខ្សែអក្សរបានបោះឆ្លងវាបង្ហាញលើកញ្ចក់។ ប្រមាណវិធីសាមញ្ញផ្សេងទៀតគឺការប្រើប្រាស់ MsgBox ("ប្រអប់សារ")។

បំណែកក្រមនេះគឺជាដំណោះស្រាយនៃត្រីកោណរបស់ផ្លូអ៊ីដ:

```vbnet
Imports System.Console
 
Module Program
 
    Sub Main() 
        Dim rows As Integer
 
        ' សុពលកម្មអន្តេពុន្ទ។
        Do Until Integer.TryParse(ReadLine("Enter a value for how many rows to be displayed: "),
rows) AndAlso rows >= 1 
            WriteLine("Allowed range is 1 and {0}", Integer.MaxValue) 
        Loop
 
        ' ឧទយពុន្ទនៃត្រីកោណផ្លូអ៊ីដ
        Dim current = 1
 
        For row = 1 To rows
            For column = 1 To row 
                Write("{0,-2} ", current) 
                current += 1
            Next
 
            WriteLine()
        Next 
    End Sub
 
    ** 
    ** ដាក់ស្រមោល Console.ReadLine រួមនិងកំណែដែលនាំមកនូវខ្សែអក្សរក្រើនរំលឹក។
    '''     
    Function ReadLine(Optional prompt As String = Nothing) As String
        If prompt IsNot Nothing Then
            Write(prompt)
        End If
 
        Return Console.ReadLine()
    End Function 

End Module
```

## សូមមើលផងដែរ 
* ម៉ៃក្រូសូផ្វវីហ្សួលស្ទីដយោអ៊ិចស្ប្រ៉ិស
* ការប្រៀបធៀបC# និង វីហ្សួលបេហ៊្សិក.ណេត
* វីហ្សួលបេហ៊្សិកសម្រាប់អនុវត្តកម្ម
* ម៉ៃក្រូសូផ្វស្មលបេហ៊្សិក
* ការប្រៀបធៀបភាសាកម្មវិធី

## ឯកសារយោង 
## អំណានបន្ថែម 
# 
# 
# 

## តំណខាងក្រៅ
* មជ្ឈមណ្ឌលអ្នកអភិវឌ្ឍវីហ្សួលបេហ៊្សិក
* ម៉ៃក្រូសូផ្វវីហ្សួលបេហ៊្សិកអិចស្រ្ប៉េះ
* ប្លខ់ក្រុមវីហ្សួលបេហ៊្សិក
* អធ្យាបកិច្ចវីហ្សួលបេហ៊្សិក