2012-07-09 20 views
5

Có sự khác biệt về hiệu suất giữa nhập toàn bộ không gian tên so với sử dụng bí danh để chỉ nhập một lớp không? Nếu vậy, có bao nhiêu sự khác biệt là nó?Hiệu suất giữa nhập toàn bộ không gian tên so với sử dụng bí danh trong C#?


Ví dụ:

Nhập toàn bộ không gian tên:

using System.Reflection; 

Aliasing để nhập khẩu chỉ có một lớp:

using BindingFlags = System.Reflection.BindingFlags; 

EDIT: Một chút giải thích tại sao bạn câu trả lời là cách nó sẽ được đánh giá cao ... nói cách khác, một cái gì đó nhiều hơn chỉ một câu trả lời có/không. Và có lẽ một cái gì đó được hỗ trợ bởi một số nguồn có thẩm quyền?

+0

bản sao có thể có của [does 'using' cung cấp bất kỳ lợi thế nào?] (Http://stackoverflow.com/questions/3911141/does-using-provide-any-advantages) – mbeckish

+2

Một bí danh sẽ gây ra ít lộn xộn hơn được cung cấp bởi ImpediDense , er, IntelliSense. – HABO

Trả lời

9

0. Nhập khẩu không gian tên là một tính năng biên dịch-thời gian và IL được tạo ra sẽ giống hệt nhau theo một trong hai cách.

+0

Còn thời gian chạy khi lắp ráp thì sao? Sẽ không chỉ các lớp được chỉ định được nạp và không phải tất cả các lớp trong một không gian tên toàn bộ? – bsara

+0

@Brandon Hàm ý hiệu suất là việc thêm .dll làm tham chiếu đến dự án. Việc thêm câu lệnh 'using' sẽ không ảnh hưởng đến những gì được hoặc không được nạp từ những dll đó. – Servy

+0

@ Brandon: Đây hoàn toàn là một khía cạnh khác. Không gian tên nhập khẩu chỉ đơn giản là tiết kiệm thời gian/khả năng đọc cải tiến cho mã nguồn, mã kết quả là chính xác giống như nếu bạn đã gõ ra những thứ như System.Collections.Generic.List (ví dụ). Độ phân giải tải và loại lắp ráp không liên quan trực tiếp đến nhập khẩu không gian tên. – Alan

4

Không chỉ là trợ giúp cho lập trình viên, CIL do trình biên dịch tạo ra là chính xác như nhau.

+0

Không có CIL được tạo cho một trong hai, phải không? Nó sẽ chứa những gì? Đó là một chỉ thị thời gian biên dịch –

+0

@KierenJohnstone: Tất nhiên, tôi muốn nói rằng CIL được tạo cho toàn bộ chương trình là như nhau. – BlackBear

3

Không có sự khác biệt về hiệu suất. Người ta nói 'nhìn ở đây khi tôi chỉ định một tên lớp, nó có thể ở đây'. Người kia nói 'khi tôi nói lớp này hoặc không gian tên, tôi có nghĩa là sử dụng cái này'.

-1

Không, nhưng thậm chí rộng hơn. Bạn tải dll chứa lõi .net và nó sẽ có hàng tá không gian tên trong đó. Bạn thực sự không có một hit cho nhập khẩu không gian tên cho đến khi bạn đi bộ bên ngoài của dll đã được nạp.

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