Visual Basic .NET

**Visual Basic.NET** là một công cụ lập trình hỗ trợ ngôn ngữ lập trình **Visual Basic.NET** trong bộ công cụ lập trình Microsoft Visual Studio 2005. Trong Microsoft Visual Studio 2005, có thể kết hợp các project (dự án) viết bằng các ngôn ngữ khác như C#, J#,... với VB2005.

VB2005 được chạy trên nền *.NET Framework* 2.0, khi đóng gói chương trình cũng cần bộ Framework này để chạy chương trình. Cũng như VB 6.0, VB2005 cũng là ngôn ngữ lập trình hướng đối tượng.

## Lịch sử
Microsoft Visual Basic. NET hay còn gọi là VB.NET được Microsoft phát triển từ cuối thập niên 1990 và ra phiên bản đầu vào năm 2002 (cùng với Visual C# và ASP.NET). Phiên bản mới nhất hiện nay là Visual Basic. NET 2015.

## Cú pháp
Cũng như Visual Basic, chú thích trong Visual Basic.NET sử dụng dấu nháy đơn ('), các lệnh trên cùng một dòng phân cách nhau bởi dấu hai chấm (:), và câu lệnh quá dài có thể nối xuống dòng dưới bằng dấu gạch dưới (_).

Một chương trình Visual Basic. NET mang tên "Hello, World":


```vb
Module HelloWorld
  Sub Main()
   Console.WriteLine("Hello, World")
   Console.ReadLine()  
 End Sub
 End Module
```


Đây là một loại chương trình cổ điển nhưng đầy đủ về mặt cú pháp thường dùng.

Kết quả xuất ra màn hình như sau:
 Hello, World

## Các câu lệnh trong thân chương trình

* Từ Khoá `Module`... `End Module`
:Module có nghĩa là Đơn thể, một chương trình có thể chứa nhiều đơn thể. Từ khoá End Module là từ khoá kết thúc chương trình không giống, không như Pascal hoặc các ngôn ngữ khác như: C/C++, J#, Java. Visual Basic không cần có dấu phân cách giữa các câu lệnh, các câu lệnh phải nằm khác dòng.

* Từ khoá `Sub`... `End Sub`
:Sub (thủ tục) một chương trình có thể chứa một hoặc nhiều thủ tục. Thủ tục chính có mang hàm `Main()` là `Sub Main()`. Hàm `Main()` của VB.NET là hàm bắt đầu của một chương trình. Khi viết chương trình VB.NET bạn phải đặt hàm Main() tại một "Sub chính" trong chương trình. nếu không đặt hàm `Main()` vào chương trình thì chương trình không thể chạy được. Có thể nói hàm `Main()` là đầu mối của chương trình.

:`End Sub` là câu lệnh kết thúc thủ tục.

* Câu lệnh Console.WriteLine()
:Câu lệnh này dùng để xuất chuỗi ra màn hình cụ thể là chuỗi "Hello, World".

* Dấu nháy kép ("")
:Chuỗi ký tự trong Visual Basic. NET được rào trong dấu nháy kép ("")

* Câu lệnh Console.ReadLine()
:Câu lệnh này dùng để đọc dữ liệu từ bàn phím
Câu lệnh này chờ khi bạn nhấn Enter để thoát khỏi màn hình Console (Màn hình của MS-DOS).

* Các cú pháp khác:
:Khai báo biến sử dụng hai từ khoá `Dim` và `As` sau đó là kiểu dữ liệu. Ví dụ:

```vb
Dim A As Integer
```


Trong đó:
`Dim` và `As` là từ khoá khai báo biến A và `Integer` (số tự nhiên) là kiểu dữ liệu.

## Ví dụ chương trình

;Chương trình tính diện tích chu vi hình chữ nhật:


```vb
Module Chunhat
       Sub Main()
       Console.Write("_ Nhập vào chiều dài hình chữ nhật: ")
       Dim a As Decimal = Console.ReadLine() 'Decimal nghĩa là số thập phân
       Console.Write("_ Nhập vào chiều rộng hình chữ nhật: ")
       Dim b As Decimal = Console.ReadLine()
        
       Dim KetQua1 As Decimal = (a+b)*2 'Có thể đặt tên biến là CV
       WriteLine("_ Chu vi hình chữ nhật là: {0}",KetQua1)

       Dim KetQua2 As Decimal = a*b 'Có thể đặt tên biến là DT       
       WriteLine("_ Diện tích hình chữ nhật là: {0}",KetQua2)'{0} ở đây là chỗ chứa dữ liệu của biến khi xuất dữ liệu nếu không có nó dữ liệu sẽ không được xuất
       End Sub
      End Module
```


## Các phát triển của VB2005 so với VB6
### 1/ Tự động hoàn thành cấu trúc

VB2005 có khả năng tự hoàn thành các cấu trúc như vòng lặp, rẽ nhánh. Ví dụ, bạn nhập:

```vb
For i = 0 to 10
```


Và nhấn `Enter`, VB2005 tự động trả về:

```vb
For i = 0 to 10
    
Next
```


Và đặt vị trí con trỏ ở giữa.

### 2/ Gọi gián tiếp API và chuyển đổi kiểu dữ liệu

- Trong VB2005, việc gọi API có thể nói là rất ít, vì VB2005 có nhiều hàm, thủ tục gọi gián tiếp. Ví dụ: Trong VB6, bạn cần gọi API ShellExecute để Windows chạy một tập tin bằng ứng dụng đúng thì với VB2005 thì chỉ cần gọi Process.Start
- Ngoài ra, kiểu dữ liệu trong VB2005 có thay đổi đôi chút, ví dụ kiểu Integer của VB2005 tương ứng với Long trong VB6.0, còn kiểu Long của VB2005 là kiểu Int64 có tới tối đa là hơn 9.000.000.000.000, vì vậy khả năng Overflow là rất thấp.

### 3/ Tự động thụt vào đầu dòng

Đây là chức năng rất hay của VB2005, nó giúp code gọn, dễ xem và bẫy lỗi.

### 4/ Debug lỗi thông qua cửa sổ Watch

Đây là chức năng giúp người dùng biết giá trị của biến mà không cần phải nhập ?  và nhấn Enter, rất thích hợp với các code dài.

## Tham khảo