2009-08-22 41 views
8

Trong VB.Net bạn có thể làm một cái gì đó như sau mà không cần bất kỳ vấn đề ... chỉ cần bỏ qua một thực tế rằng đây là một lớp khá vô dụng :-)tài liệu tham khảo không gian tên trong C# vs VB.Net


Imports System 

Public Class Class1 
    Public Shared Function ArrayToList(ByVal _array() As String) As Collections.Generic.List(Of String) 
     Return New Collections.Generic.List(Of String)(_array) 
    End Function 
End Class 

Tuy nhiên nếu bạn làm điều tương tự trong C# ...


using System; 

public class Class1 
{ 
    public static Collections.Generic.List ArrayToList(string[] _array) 
    { 
     return new Collections.Generic.List(_array); 
    } 
} 

bạn sẽ nhận được một lỗi trên phù hợp với sự trở lại trên "Collections.Generic.List" nói "loại hoặc namespace tên 'Bộ sưu tập' could không được tìm thấy (bạn có thiếu chỉ thị sử dụng hoặc tham chiếu lắp ráp không?) "

Tôi biết rằng bạn phải thực sự có chỉ thị sử dụng cho System.Collections.Generic để sử dụng Danh sách nhưng tôi không biết lý do tại sao. Tôi cũng không hiểu tại sao tôi không nhận được cùng một lỗi trong khai báo hàm, nhưng chỉ trong câu lệnh return.

Tôi đã hy vọng một người nào đó có thể giải thích điều này hoặc thậm chí giới thiệu tôi đến một trang kỹ thuật giải thích nó. Tôi đã tìm kiếm xung quanh, nhưng không thể tìm thấy bất cứ điều gì giải thích khái niệm này.

Chỉnh sửa: Chỉ cần lưu ý, câu hỏi thực sự là về tham chiếu của một không gian tên phụ chẳng hạn như trong ví dụ có thể tham chiếu Bộ sưu tập trong Hệ thống.

+1

tham khảo: http://stackoverflow.com/questions/768905/namespace-and-sub-namespaces – Kirtan

Trả lời

4

using chỉ thị trong C# does not allow này:

Tạo một chỉ thị sử dụng để sử dụng loại trong không gian tên mà không cần phải chỉ định không gian tên. Chỉ thị sử dụng không cấp cho bạn quyền truy cập vào bất kỳ không gian tên nào được lồng trong không gian tên mà bạn chỉ định.

VB.NET, tuy nhiên, supports somewhat closer hành vi với Imports tuyên bố:

Phạm vi của các yếu tố làm sẵn bằng một tuyên bố nhập khẩu phụ thuộc vào cách cụ thể mà bạn đang khi sử dụng câu lệnh Imports.Ví dụ: , nếu chỉ có một không gian tên là được chỉ định, tất cả các thành viên được đặt tên duy nhất của không gian tên đó và các thành viên của mô-đun trong không gian tên đó, là có sẵn mà không đủ điều kiện. Nếu cả không gian tên và tên của thành phần của không gian tên đó là được chỉ định, chỉ các thành viên của thành phần có sẵn mà không có tiêu chuẩn .

Reference SO Question

+0

Điều này thật tuyệt vời, không chắc chắn cách tôi bỏ lỡ bài đăng này, tôi đoán chuỗi tìm kiếm của tôi không đủ gần. Cảm ơn! – tcnolan

4

Điều này là do VB.Net hỗ trợ một phần không gian tên; C# thì không.

Với Visual Basic, hệ thống được nhập theo mặc định và không gian tên con là tự động được giải quyết.

Đọc thêm trong bài viết này.

VB.Net vs C#, Round 2: Partial Namespaces

+1

Đó là một bài báo tuyệt vời. Bài thứ ba tôi nghĩ trả lời câu hỏi trực tiếp nhất ở đây, nhưng điều này rất hữu ích vì vậy tôi đã cho điểm. Cảm ơn! – tcnolan

+0

@rahul, liên kết đến bài viết không gian tên một phần hiện đã bị hỏng. – CokoBWare

0

bạn có thể nói System.Collections.Generic.List. rằng sẽ làm việc.

Tôi nghĩ bạn cần cung cấp toàn bộ danh sách và không bỏ qua phần hệ thống.

cũng có thể bạn sẽ cần phải template nó với chuỗi như trong Danh sách tương tự như danh sách (Tất string)

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