Khai báo và khởi tạo

Một phần của tài liệu TÀI LIỆU HƯỚNG DẪN VISUAL BASIC (Trang 41 - 45)

Lệnh khai báo biến là cú pháp kết hợp tên biến và kiểu dữ liệu. Tự thân lệnh này khơng hàm ý tạo biến. Tuy nhiên, với các biến khơng phải kiểu đối tượng, lệnh khai báo biến cũng chính là lệnh tạo biến

Cú pháp:

Dim x as Integer

Dim x as Integer = New Integer()

Khi khai báo nhiều biến trên cùng dịng và khơng chỉ ra kiểu của biến, biến sẽ lấy kiểu dữ liệu của biến khai báo dữ liệu tường minh tiếp sau đĩ

Dim x as Integer, a, b, c as Long Các biến a, b, c đều cùng cĩ kiểu Long

Cĩ thể khai báo và khởi tạo giá trị cho biến cùng lúc: Dim x as Integer = 100, y as Integer = 200

Trong cách này, phải khai báo tường minh kiểu dữ liệu cho từng biến. Với các biến kiểu đối tượng, cách khai báo cũng như thế

Dim objA as MyClass

Lệnh trên chưa tạo ra biến đối tượng và sau dịng lệnh, objA vẫn là Nothing Những cách sau đây sẽ khai báo và tạo biến đối tượng:

Dim objA as New MyClass() Hoặc

Dim objA as MyClass = New MyClass() Hoặc

Dim objA as MyClass objA = New MyClass() Các từ khĩa để khai báo biến

Từ khĩa khai báo

Từ khĩa Ý nghĩa

Public Sử dụng tồn cục

Private Sử dụng cục bộ trong phạm vi khai báo như Dim Friend Sử dụng trong phạm vi của project

Protected Sử dụng trong phạm vi của lớp và các lớp con Protected Friend Sử dụng trong phạm vi của Proctected và Friend

II.3. Kiểu trị và tham chiếu (Value Type và Reference Type)

Các kiểu được định nghĩa trong Common Type System thuộc ba loại sau:

– Kiểu trị (Value Type)

– Kiểu tham chiếu (Reference Type)

– Kiểu con trỏ (Pointer Type)

VB.Net khơng cĩ kiểu con trỏ nên chúng ta chỉ xem xét kiểu trị và kiểu tham chiếu.

Khi một biến kiểu trị được khai báo, một vùng nhớ được dành riêng để chứa giá trị thực của biến.

nhưng sẽ gán cho biến bốn byte chứa địa chỉ của đối tượng. Tĩm lại, biến kiểu trị chứa giá trị của biến cịn biến kiểu tham chiếu chỉ đến nơi chứa giá trị.

Sự khác biệt này dẫn đến nhiều hệ quả mà phép gán là một. Để minh họa chúng ta xem Class sau với một thuộc tính:

Ví dụ:

Public Class Nguoi Public tuoi as Short End Class

Và kiểu Structure cũng cĩ một thuộc tính: Structure ConNguoi

Public tuoi as Short End Structure

Class là kiểu tham chiếu trong khi Structure là kiểu trị. Hãy xem xét đoạn lệnh sau:

Dim Ng1, Ng2 as Nguoi Dim CNg1, CNg2 as ConNguoi Ng1 = New Nguoi() Ng1.tuoi = 30 Ng2 = Ng1 Ng2.tuoi = 20 Debug.WriteLine(Ng1.tuoi) ' xuất ra 20 Debug.WriteLine(Ng2.tuoi) ' xuất ra 20 CNg1 = New ConNguoi() CNg1.tuoi = 30 CNg2 = CNg1 CNg2.tuoi = 20 Debug.WriteLine(CNg1.tuoi)' xuất ra 30 Debug.WriteLine(CNg2.tuoi)' xuất ra 20

Khi được gán cho nhau, hai biến tham chiếu Ng1, Ng2 cùng chứa địa chỉ trỏ đến một đối tượng. Vì vậy thay đối giá trị của thuộc tính tuoi trên biến này, thay đổi cũng phản ánh trên biến kia.

Ngược lại, khi được gán cho nhau, biến tham trị sẽ tạo nên một vùng nhớ chứa trị mới, hai biến trị CNg1, CNg2 cùng chứa trị như nhau nhưng trên hai vùng nhớ khác nhau. Do đĩ, giá trị của thuộc tính tuoi của hai biến được chứa trên hai vùng nhớ và độc lập nhau.

Chú ý: Kiểu String cũng là kiểu tham chiếu nhưng cĩ một số đặc tính của kiểu trị.

Chúng ta xét đoạn lệnh sau: Dim ch1, ch2 as String ch1 = "Chuỗi 1"

ch2 = "Chuỗi 2"

MsgBox(ch1) ' xuất ra Chuỗi 1

Chúng ta nghĩ rằng ch1 chứa "Chuỗi 2", nhưng ch1 lại chứa "Chuỗi 1". Lý do như sau: khi biến kiểu String đã được tạo ra, giá trị của chúng khơng thể sửa đổi. Sửa đổi trị của biến String là tạo ra một thể hiện mới chứa nội dung sửa đổi. Do vậy:

– Khi gán ch2 = ch1, ch2 trỏ đến cùng một chuỗi như ch1

– Nhưng khi gán ch2 = "Chuỗi 2" do khơng thể thay đổi giá trị nên ch2 trỏ đến một thể hiện mới khác với ch1

Bảng sau đây cho biết kiểu dữ liệu thuộc kiểu trị hay kiểu tham chiếu:

Phân loại

Value Type Reference Type

ƒ Các kiểu dữ liệu số

ƒ Kiểu Boolean, Char, Date

ƒ Kiểu Structure, ngay cả khi các thành phần trong Structure là kiểu tham chiếu.

ƒ Kiểu String

ƒ Mảng

ƒ Kiểu lớp đối tượng

II.4. Kiểu Enum (Enumeration)

Kiểu Enum là sự liên kết một tập hợp các trị hằng với các tên gợi nhớ. Các trị này mặc nhiên cĩ kiểu Integer và chỉ cĩ thể là kiểu Byte, Short, Long hoặc Integer.

Kiểu Enum chỉ được tạo trong các Class hoặc Module

Cú pháp:

[Public | Protected | Friend | Protected Friend | Private] [ Shadows ] Enum <tên> [ As <Kiểu DL>] <tên thành phần thứ 1> [ = trị hằng 1] <tên thành phần thứ 2> [ = trị hằng 2] ... <tên thành phần thứ 3> [ = trị hằng 3] End Enum Ví dụ:

Public Enum DoTuoi as Integer Nhidong = 0

Thieunien = 1 Thanhnien = 2 Trungnien = 3 End Enum

Khi khơng chỉ ra trị hằng, VB.NET sẽ gán trị cho thành phần đầu tiên là 0 và tăng dần cho các thành phần kế tiếp:

Ví dụ:

Public Enum DoTuoi as Integer Nhidong ' mặc nhiên cĩ trị 0 Thieunien ' mặc nhiên cĩ trị 1 Thanhnien ' mặc nhiên cĩ trị 2 Trungnien ' mặc nhiên cĩ trị 3 End Enum

Nếu chỉ gán trị hằng cho thành phần đầu tiên, các thành phần kế tiếp sẽ nhận giá trị tăng dần: Public Enum DoTuoi as Integer

Nhidong = 100

Thieunien ' mặc nhiên cĩ trị 101 Thanhnien ' mặc nhiên cĩ trị 102 Trungnien ' mặc nhiên cĩ trị 103 End Enum

Sau khi khai báo kiểu Enum, chúng ta cĩ thể khai báo biến kiểu Enum cũng như sử dụng các thành phần của kiểu này thay cho các trị hằng.

Dim a As DoTuoi a =

Một phần của tài liệu TÀI LIỆU HƯỚNG DẪN VISUAL BASIC (Trang 41 - 45)

Tải bản đầy đủ (PDF)

(188 trang)