Đối với tôi, việc phát triển hệ sinh thái Java đã trả các hóa đơn trong nhiều năm. Tuy nhiên, trong nhiều năm nay, tôi đã làm việc chủ yếu trong không gian .Net. Ban đầu, quá trình chuyển đổi của tôi sang thế giới .Net bao gồm việc viết và duy trì mã VB.Net. VS cung cấp gần như tất cả các hỗ trợ intellisense tốt đẹp mà tôi mong đợi sau nhiều năm làm việc với combo Eclipse/Java. Cuối cùng, chủ lao động của tôi quyết định làm phát triển mới trong C#. Ấn tượng ban đầu của tôi về sự hỗ trợ intellisense cho C# ít hơn sao. Đôi khi có vẻ như VS không có trình biên dịch nền cho C#, nhưng đôi khi nó làm một cái gì đó thông minh, cho thấy có một số xử lý nền ở đó, nhưng không đủ để thực sự tăng năng suất theo những cách có ý nghĩa. Có bất kỳ lý do kỹ thuật lành mạnh nào cho sự khác biệt này về hỗ trợ intellisense giữa hai ngôn ngữ không?Tại sao hỗ trợ IntelliSense cho C# thiếu khi so sánh với VB.NET?
Trả lời
Đã có khoảng cách giữa C# và VB trong một thời gian. VB tạo ra rất nhiều mã cho bạn. Ví dụ, nhấn Enter sau khi kết thúc câu lệnh "If" sẽ tự động thêm "Sau đó" ở cuối dòng đó nếu bạn rời khỏi nó, và đóng nó với phần "End If". Trong C#, bạn có thể thêm các dấu ngoặc nhọn bắt đầu và đóng {} đó.
VB đã có quá trình biên dịch nền trước C#. Trong thực tế, đó là một trong những yếu tố hấp dẫn chính của việc sử dụng ReSharper, cung cấp chức năng như vậy. Tuy nhiên, kể từ VS 2008/.NET 3.5 SP1, tất cả đã thay đổi. Bạn có thể đọc bài Scott Gu về here đó, nhưng tôi sẽ dán phần có liên quan:
"The C# code editor hiện xác định và hiển thị màu đỏ lỗi squiggle cho nhiều vấn đề mã ngữ nghĩa mà trước đây cần một rõ ràng Ví dụ: nếu bạn cố gắng khai báo và sử dụng loại không xác định trong Trình chỉnh sửa mã C# hôm nay, bạn sẽ không thấy lỗi biên dịch cho đến khi bạn xây dựng. sống màu đỏ lỗi squiggle ngay lập tức (không có yêu cầu biên dịch rõ ràng). "
Sử dụng CodeRush hoặc ReSharper chắc chắn sẽ nâng cao trải nghiệm với việc tự động hoàn thành các câu lệnh phổ biến khiến nhà phát triển VB cảm thấy như đã có chuyển đổi liền mạch.
Điều đó không hoàn toàn giải quyết các vấn đề kỹ thuật, nhưng các nhóm phát triển khác nhau và không nhất thiết phải làm điều tương tự. Nói cách khác, không có khả năng là một cách tiếp cận được chia sẻ. This blog post trích, bởi một lãnh đạo kỹ thuật trong nhóm VB, hỗ trợ này:
“Bối cảnh biên soạn” là tính năng trong VB cung cấp cho bạn một bộ hoàn chỉnh lỗi khi bạn gõ. Những người di chuyển qua lại giữa VB và C# nhận thấy điều này, nhưng VB chỉ nhà phát triển có thể không nhận ra rằng các ngôn ngữ khác như C# không phải lúc nào cũng cung cấp cho số điện thoại 100% Intellisense và . tất cả các lỗi tồn tại trong mã của bạn. Đây là là vì động cơ Intellisense của chúng là các trình biên dịch riêng lẻ, được thu nhỏ lại không biên dịch hoàn toàn trong nền .VB, mặt khác, biên dịch toàn bộ dự án của bạn từ đầu đến cuối như Visual Studio ngồi nhàn rỗi, cho phép chúng tôi ngay lập tức cư danh sách công việc với hoàn toàn lỗi chính xác và cho phép chúng tôi cung cấp cho bạn hoàn toàn chính xác Intellisense.
Một lưu ý cuối cùng là recent Channel9 interview với Tập đoàn PM của C#/VB/F # đội, Luca Bolognese, nơi ông đã nhấn mạnh như thế nào các ngôn ngữ không còn đi lạc ra theo các hướng khác nhau và sẽ bắt đầu chia sẻ của họ điểm tương đồng. Vì vậy, có vẻ như tương lai nắm giữ những điều tuyệt vời!
Có một giọng nói nhỏ trong một số khu vực nhỏ, tầm thường của bộ não của tôi nghĩ rằng đây là một ý tưởng tồi. Tại sao? Những ngôn ngữ này không giống với các lý do thực dụng. Họ nên được phép phát triển độc lập. –
Tôi phải thừa nhận rằng tôi chưa đọc tất cả câu trả lời này, nhưng đoạn đầu tiên dường như không hoàn toàn chính xác. Bạn đề cập đến những gì cơ bản âm thanh như một đoạn mã cho một tuyên bố nếu trong VB - C# cũng có đoạn như thế này: Gõ "nếu" và nhấn tab để tạo ra toàn bộ khối. Có rất nhiều đoạn mã tương tự khác nữa. –
Đáng buồn thay, tôi nghi ngờ đây là knell chết cho VB.Net. MS chuyển xuống trạng thái thứ hai/thứ ba. Tôi là một trường học cũ c/C++/java/C# (và unix guy) nhưng tôi nhận ra sau khi làm việc với VB.Net, rằng nó là một ngôn ngữ tốt chết tiệt và có một đại diện crap không được bảo vệ trong nhiều người trong cộng đồng lập trình. Tôi sẽ nhớ nó. –
- 1. Python: Tại sao so sánh giữa các danh sách và bộ tuple không được hỗ trợ?
- 2. Javascript: Tại sao so sánh với null?
- 3. So sánh DateTime của nullable trong VB.net
- 4. Tại sao C# không so sánh hai loại đối tượng với nhau nhưng VB không?
- 5. Tại sao string.IsNullOrEmpty nhanh hơn so với so sánh?
- 6. không được hỗ trợ NSSortDescriptor (khối so sánh không được hỗ trợ)
- 7. Tại sao hàm lubridate quá chậm khi so sánh với.POSIXct?
- 8. Tại sao so sánh String (CompareTo) nhanh hơn trong Java so với trong C#?
- 9. Tại sao Intellisense "Không khả dụng cho C++/CLI"?
- 10. Hỗ trợ ngôn ngữ cho các toán tử so sánh xích (x <y <z)
- 11. Tại sao mảng hỗ trợ IList?
- 12. Toán tử so sánh cho chuỗi C
- 13. VB.NET vs C#: Các loại Anonymous và IntelliSense
- 14. Tại sao gán giá trị cho chuỗi trước khi so sánh, khi mặc định là null
- 15. Tại sao Arguments dài hỗ trợ Array.Copy
- 16. Tại sao C++ 11 không hỗ trợ cấu trúc ẩn danh, trong khi C11 làm gì?
- 17. So sánh các loại trong VB.NET
- 18. C Strings So sánh với Equal Đăng
- 19. Tại sao C# không hỗ trợ quá tải cho nhà điều hành bằng cách tham chiếu?
- 20. hỗ trợ HTML5 API Javascript Intellisense trong visual studio
- 21. typenames So sánh trong C++
- 22. Tại sao không có intellisense trong ASP.Net MVC 2.0 khi gán giá trị Model cho JavaScript?
- 23. Tại sao so sánh gấp đôi nhanh hơn uint64?
- 24. Xử lý sự thiếu hỗ trợ của Expression Blend cho các dự án C++/CLI
- 25. C# Float so với VB.net Single - Namin 'complainin'
- 26. ActionBar (Hỗ trợ) với Fragment (hỗ trợ)
- 27. So sánh Xml trong C#
- 28. So sánh hiệu suất của NSArray so với C Array
- 29. ServiceStack bật hỗ trợ intellisense Razor mà không cần MVC
- 30. Tại sao tôi nhận được một NullPointerException khi so sánh một String với null?
Những trục trặc duy nhất tôi thấy là C# là một ngôn ngữ nhạy cảm, vì vậy đôi khi tôi không kích hoạt nó đúng cách. Bạn có thể đăng một ví dụ về ý của bạn? – Eric
Đó là tất cả về VB.NET có biên dịch nền từ đầu. –
Cập nhật Intellisense của C# sau khi chỉnh sửa mã nguồn, ngay cả trước khi xây dựng/biên dịch lại; đó là lý do tại sao tôi tự hỏi liệu máy tính của OP chỉ đơn giản là chậm vì một lý do nào đó. – ChrisW