2011-04-29 48 views
38

Tôi đang cố gắng sử dụng phương thức Array.Contains() trong C# và vì một lý do nào đó nó không biên dịch được, mặc dù tôi tin rằng tôi đang sử dụng C# 4.0 và C# nên hỗ trợ điều này trong 3.0 và sau đó.Lỗi biên dịch C# Array.Contains()

if (! args.Contains ("-m")) 
    Console.WriteLine ("You must provide a message for this commit."); 

Và tôi nhận được lỗi này:

Main.cs(42,15): error CS1061: 'System.Array' does not contain a definition for 'Contains' and no extension method 'Contains' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)

Tôi đang biên soạn từ dòng lệnh, không có tùy chọn: "csc main.exe".

+1

Tôi tự hỏi cách sử dụng LINQ quá cục bộ ... – Blindy

+4

Tôi không nhận được phiếu bầu và đóng er. Có vẻ như một câu hỏi hoàn toàn công bằng. –

+9

Đọc thông báo lỗi. Nó nói với bạn điều gì là sai. ** Bạn đang thiếu tham chiếu assembly hoặc chỉ thị sử dụng **. –

Trả lời

72

Bạn cần thêm using System.Linq; vào đầu chương trình của mình.

12

Bạn đã quên using System.Linq?

Nhân tiện, nếu bạn không thể sử dụng LINQ, có nhiều tùy chọn khác như Array.Exists.

+2

Hoặc 'Array.Contains', điều tương tự như anh ta muốn. Nhưng rõ ràng là anh ta sử dụng C# 3.5 nên không có lý do gì mà anh ta không thể sử dụng LINQ. – Blindy

9

Nếu bạn không' muốn sử dụng LINQ thử

((IList<string>)args).Contains("-m") 
0

Hãy chắc chắn rằng bạn đang sử dụng phiên bản đúng của CSC (csc /?) - bạn cần phiên bản 2010 để biên dịch cho 4.0. Bạn cũng có thể cần thêm các thư viện bổ sung (/ r option) để biên dịch thành công.

2

sử dụng System.Linq này được tôi mỗi khi

2

tôi đã cùng một vấn đề và tôi đã

using System.Linq 

Đó là bởi vì tôi đã cố gắng để so sánh chuỗi int, nhưng bằng cách nào đó nó đang nói

'System.Array' does not contain a definition for 'Contains'