2010-08-18 35 views
7

Tôi đã sử dụng C# trước đó. Tuy nhiên, sau khi tôi tham gia vào một công ty mới, tôi cần viết vb.net. Tuy nhiên tôi thấy rất khó để viết nó. Bởi vì tôi thấy rằng vb.net không được gõ mạnh. Nó thực sự không được đánh máy mạnh? Hoặc bất kỳ cài đặt nào cho điều đó? Đây là những ví dụ.VB.NET gõ nhẹ? mạnh mẽ đánh máy?

If (Me.Check1() And Me.Check2()) Then 

Từ kiến ​​thức C# của tôi, một lần Me.Check1() lợi nhuận sai, Me.Check2() sẽ không được thực thi. Tuy nhiên tôi đã sai. And là dành cho các hoạt động bitwise. Tôi nên sử dụng AndAlso cho các hoạt động boolean. Vì vậy, nó phải là

If (Me.Check1() AndAlso Me.Check2()) Then 

Vấn đề là If (Me.Check1() And Me.Check2()) Then vẫn hợp lệ và không có lỗi biên dịch. Tôi thực sự muốn biết liệu tôi có thể kiểm tra các hoạt động "không phù hợp" như vậy hay không.

AndAndAlso chỉ là một trong các trường hợp.

Đôi khi, tôi cần phải bỏ qua các trường hợp so sánh chuỗi. Tuy nhiên, mọi người đều mắc lỗi. Đôi khi, tôi đã làm

If (String.Compare(Me.string1, Me.string2, True)) Then 

Tôi nghĩ mọi người đều biết vấn đề. Nó phải là

If (String.Compare(Me.string1, Me.string2, True) = 0) Then 

Tuy nhiên, tôi vẫn không thể kiểm tra trường hợp này trong khi biên soạn.

Tôi yêu C# vì nó giúp chúng tôi tìm thấy nhiều vấn đề trong quá trình biên dịch. Tuy nhiên, VB.NET làm cho tôi rất bối rối và nhiều lỗi phải được xác định trong thời gian chạy và thử nghiệm.

Một ví dụ nữa là

Public Sub MySub(ByVal obj as Object) 
    Console.WriteLine(obj.MyProperty) 
End Sub 

Trong vb.net, loại này tuyên bố vẫn còn hiệu lực. Tại sao? Tại sao? Tại sao? Có ai biết làm thế nào để sử dụng vb.net như C#?

+4

Tùy chọn Strict On –

+1

Không ví dụ nào của bạn thực sự minh họa cho việc nhập yếu. Có thể nhập động. – recursive

+0

Tôi biết điều này là cũ nhưng tôi nghĩ rằng nhận xét này là có liên quan. OP có quan niệm sai về các toán tử Boolean và bitwise. VB hoạt động chính xác giống như C# trong vấn đề đó. Trong C# bạn có toán tử '&&' cho các phép toán Boolean mạch ngắn và bạn có toán tử '&' cho các phép toán Boolean không mạch ngắn và các phép toán bitwise. Chúng tương tự 100% với 'AndAlso' và' And' trong VB. Cũng tương tự với '||' và '|' trong C# và 'OrElse' và' Or' trong VB. – jmcilhinney

Trả lời

11

VB.Net có cả chế độ gõ mạnh và yếu. Nó được điều khiển thông qua tùy chọn Nghiêm ngặt. Điều này có thể được đặt ở cấp độ tệp hoặc dự án.

' Enable VB.Net strong typing 
Option Strict On 

' Enable VB.Net weak/dynamic typing 
Option Strict Off 
+2

wow ... cảm ơn bạn rất nhiều !!! Khi tôi bật nó lên, hơn 1000 lỗi biên dịch. hahahaa ~ Thật cảm ơn !!! –

+0

Một câu hỏi nữa, bạn có biết cách tạo một 'IIf' mạnh mẽ không? Trong C#, toán tử '?:' Được gõ mạnh. –

+3

Nếu bạn đang sử dụng Visual Studio 2008, hãy sử dụng 'If' thay vì' IIf' IIRC – JaredPar

0

Gần đây, tôi đã nhấn nút Tùy chọn nghiêm ngặt trên dự án vb.net cũ hơn và dành nhiều giờ sửa lỗi loại, nhưng nó đáng giá. Hãy chắc chắn rất cẩn thận xung quanh DateTime thành chuỗi và chuỗi thành chuyển đổi DateTime. Tôi đã có một vài trường hợp "12:00:00 AM" được tacked vào cuối hộp văn bản có thể gây ra vấn đề với codebase cũ.

Khi lỗi rõ ràng, bạn có thể bật Tùy chọn suy luận để Dim sẽ hoạt động như var của C# và bạn không phải nhập rõ ràng tất cả các truy vấn LINQ của mình.

(Tôi đã đưa ra nhận xét này nhưng có vẻ như tôi cần nhiều điểm hơn, xin lỗi)

Các vấn đề liên quan