Trình biên dịch .NET có thể lấy bất kỳ loại cú pháp ngôn ngữ nào và biến thành một tương đương .NET. Đôi khi có một cho một thư từ khác lần khác không có.
Bằng cách sử dụng .NET Reflector bạn có thể xem trình biên dịch thực sự đang làm gì.
Trong mô hình VB.NET mô-đun tồn tại do di sản được kế thừa từ Visual BASIC và một phần từ Microsoft BASIC.
VB.NET trình biên dịch sẽ thực hiện việc này
Public Module CoreModule
Dim R As New System.Random(CInt(Microsoft.VisualBasic.Timer))
Public Function D(ByVal Roll As Integer) As Integer
Return R.Next(0, Roll) + 1
End Function
Public Function _1D6() As Integer
Return D(6)
End Function
Public Function _2D6() As Integer
Return D(6) + D(6)
End Function
Public Function _3D6() As Integer
Return D(6) + D(6) + D(6)
End Function
Public Function _4D6() As Integer
Return D(6) + D(6) + D(6) + D(6)
End Function
Public Function CRLF() As String
Return Microsoft.VisualBasic.ControlChars.CrLf
End Function
End Module
Và biến nó thành này (mã bỏ qua cho ngắn gọn)
Public NotInheritable Class CoreModule
' Methods
Shared Sub New()
Public Shared Function _1D6() As Integer
Public Shared Function _2D6() As Integer
Public Shared Function _3D6() As Integer
Public Shared Function _4D6() As Integer
Public Shared Function CRLF() As String
Public Shared Function D(ByVal Roll As Integer) As Integer
' Fields
Private Shared R As Random
End Class
Trong C# tương đương là này
public sealed class CoreModule
{
// Fields
private static Random R;
// Methods
static CoreModule();
public static int _1D6();
public static int _2D6();
public static int _3D6();
public static int _4D6();
public static string CRLF();
public static int D(int Roll);
}
Tất cả các vấn đề đó là phát ra CIL thực hiện công việc một cách chính xác.
Khả năng này là lý do chính tại sao nhiều lập trình viên Visual BASIC 6 cũ hơn rất bực mình với những thay đổi của MS đối với ngôn ngữ. Ví dụ: từ khóa Integer phát ra Int32 thay vì Int16.
Mô-đun được hiển thị với các hội đồng khác tham chiếu đến cụm ban đầu miễn là mô-đun được công bố công khai.
Nguồn
2009-01-13 07:12:52
Hãy suy nghĩ bạn hiểu lầm về khả năng của VB.Net. Mô-đun không phải là Lớp chia sẻ/tĩnh, chúng là toàn cầu đối với các phương thức Không gian tên có thể được sử dụng ở bất kỳ đâu. Chúng thường là Loại trừu tượng, không phải là Tiện ích mở rộng. Chức năng, Subs, và thậm chí phần mở rộng tất cả sống ra khỏi bong bóng OOP, được mô tả bởi @ Konrad-Rudolph – GoldBishop
Một điểm khác, cho người xem trong tương lai .... Tên của các mô-đun không được có cùng tên giữa các thư viện. Tên phải là duy nhất trong tên giữa các sử dụng. – GoldBishop