2009-02-19 27 views

Trả lời

9

Điều này đã được bảo hiểm before về nguyên tắc, nhưng có sự khác biệt: về cơ bản người trợ giúp VB sẽ thực hiện công việc bổ sung cho bạn để có được phân tích thông qua nơi generics sẽ ném một ngoại lệ, và nói chung nhưng không phổ VB trợ giúp là nhanh hơn (mặc dù tôi không biết nếu nó là đáng kể như vậy) bởi vì họ chỉ là IL đường thực sự. Mùa để nếm thử.


Chỉnh sửa: This guy bao gồm nó tốt hơn tôi có thể.

Chỉnh sửa Redux: Joel Coehoorn cũng đề xuất số precursor to the above article và dường như có một số điểm chuẩn trên tay áo của anh ấy ở đâu đó.

Joel đã viết:

Bản tóm tắt là CInt() là một nhà điều hành , trong khi Convert.ToInt32() là một hàm . CInt sống ở đâu đó trong giữa (int) x; và Convert.ToInt32 (x) ;.

+1

Huh: bạn đã thực hiện chỉnh sửa của bạn trong khi tôi đang nghiên cứu bài của tôi - chủ yếu là tìm kiếm (và thất bại trong việc tìm) liên kết điểm chuẩn mà tôi đã đề cập. Thật buồn cười vì liên kết của bạn là tác phẩm tiếp theo của tác giả giống với tác giả tôi đã đăng. Nếu bạn thực hiện một chỉnh sửa khác để bao gồm cả hai, tôi sẽ xóa bài đăng của tôi có lợi cho bạn. –

+1

Xong, nhưng tôi sẽ không xúc phạm nếu bạn chỉnh sửa nó trong bạn biết :) – annakata

+0

Tôi yêu bản tóm tắt của Joel. Cảm ơn bạn – Sung

1

Có một sự khác biệt lớn mà tôi vừa phát hiện và tôi nghĩ đáng nói đến ở đây - mặc dù vài năm sau OP! CInt({Boolean expression}) đánh giá đến -1 khi True, trong khi Convert.ToInt<n> để đánh giá 1.

Điều này có thể bắt bất cứ ai ra ai đang sử dụng các cựu trong một đánh giá môn toán, EG:

For i As Integer = 0 To 1 - CInt(processThirdItem) 'Evaluates to -1 (1 - -1 = 2) 
    'Do stuff... 
Next 

Vì vậy, sử dụng Convert.ToInt32 ở vị trí của CInt wouldn không hoạt động trừ khi bạn thay đổi toán tử từ - thành +.

Trong chức năng trình .NET của ngắn mạch If hiện nay cung cấp một cách tốt hơn để làm điều này:

For i As Integer = 0 to If(processThirdItem, 2, 1) 
    'Do stuff... 
Next 
Các vấn đề liên quan