2010-01-30 31 views
14

Tôi đang làm việc để cải thiện kỹ năng của mình bằng các ngôn ngữ khác, đến từ việc sử dụng C++ làm ngôn ngữ lập trình chính của tôi. Dự án hiện tại của tôi là búa xuống C#. Net, như tôi đã nghe nói nó là một tốt ở giữa ngôn ngữ cho một trong những người hiểu biết cả hai c + + và VB.net.Điều gì sẽ là một sự thay thế tốt cho vector C++ trong C#?

Thông thường khi làm việc với một số lượng không xác định các yếu tố trong c + +, tôi sẽ khai báo biến của tôi dưới dạng vectơ và chỉ cần chuyển từ đó. Vectơ dường như không tồn tại trong C#, và trong chương trình hiện tại của tôi tôi đã sử dụng arraylists thay vào đó, nhưng tôi bắt đầu tự hỏi nếu đó là một thói quen tốt để sử dụng arraylists như tôi đọc ở đâu đó đó là một carryover từ .net 1.0

Câu hỏi dài ngắn - loại danh sách được sử dụng phổ biến nhất cho C# là gì?

+1

Câu trả lời cho điều này sẽ áp dụng cho bất kỳ ngôn ngữ .NET nào (bao gồm C++/CLI và F #), có tương đối ít kiểu dữ liệu cho mỗi ngôn ngữ. MẠNG LƯỚI. – Richard

Trả lời

22

Nếu bạn nhắm mục tiêu trước NET phiên bản 2.0, sử dụng ArrayList

Nếu bạn nhắm mục tiêu .NET 2.0+ sau đó sử dụng chung loại List<T>

Bạn có thể cần phải tìm thay thế cho C++ khác container tiêu chuẩn, vì vậy đây là bản đồ có thể có của C++ thành .NET 2.0+ các loại tương đương hoặc tương đương:

std::vector - List<T> 
std::list - LinkedList<T> 
std::map - Dictionary<K, V> 
std::set - HashSet<T> 
std::multimap - Dictionary<K, List<V>> 
+3

Tôi nghĩ 'std :: set' sẽ ánh xạ chặt chẽ hơn với' HashSet '. –

+0

+1 Sean, có vẻ như là lựa chọn thay thế tốt hơn. – mloskot

+0

Điều gì về hiệu suất của 'Danh sách ' trong C#? Nó có tốt như 'std :: vector' trong C++ ?! – Babak

0

Tôi khuyên bạn nên khám phá không gian tên System.Collections, đặc biệt là tập hợp các đối tượng System.Collections.Generics. Chức năng tích hợp có thể được gõ mạnh mẽ qua các Danh sách, Từ điển và NameValueCollections khác nhau để cung cấp cho bạn một loạt các khả năng. Chúng cũng có thể mở rộng vì vậy nếu chúng không thực hiện những gì bạn cần, bạn chỉ cần mở rộng chúng và thêm chức năng mới.

0

Điều đó muốn là List<T>, tôi cho là vậy. ArrayList là loại không chung chung và — như bạn đã quan sát chính xác — phần còn lại từ .NET 1 lần. Bắt đầu với .NET 2, bạn có thể sử dụng Generics và do đó List<T>.

0

Câu trả lời ngắn: List<T>. Bạn có thể tìm tài liệu here.

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