Ответ 1
Вам нужно добавить using System.Linq;
в начале вашей программы.
Я пытаюсь использовать метод Array.Contains() в С# и по какой-то причине не удается скомпилировать его, хотя считаю, что я использую С# 4.0, а С# должен поддерживать это в версии 3.0 и более поздних.
if (! args.Contains ("-m"))
Console.WriteLine ("You must provide a message for this commit.");
И я получаю эту ошибку:
Main.cs(42,15): ошибка CS1061: "System.Array" не содержит определения для "Содержит" и не используется метод расширения "Содержит", принимающий первый аргумент типа "System.Array" (вам не хватает директивы using или ссылки на сборку?)
Я компилирую из командной строки без параметров: "csc Main.exe".
Вам нужно добавить using System.Linq;
в начале вашей программы.
Вы забыли using System.Linq
?
Кстати, если вы не можете использовать LINQ, есть много других опций, таких как Array.Exists
.
Если вы не хотите использовать linq try
((IList<string>)args).Contains("-m")
У меня была такая же проблема, и у меня была
using System.Linq
Это было потому, что я пытался сравнивать строку с int, но как-то это говорил
'System.Array' не содержит определения для 'Contains'
используйте System.Linq Это получает меня каждый раз
Убедитесь, что вы используете правильную версию CSC (csc/?) - вам нужна версия 2010 для компиляции для 4.0. Вам также может потребоваться добавить дополнительные библиотеки (опция/r) для компиляции для успеха.
Ответы, в которых говорится о включении System.Linq, можно найти, но есть и другая причина этой проблемы. Если тип аргумента для.Contains() не соответствует типу массива, вы получите эту ошибку.
public class Product
{
public long ProductID {get;set;}
}
public IEnumerable<Product> GetProductsByID(int[] prodIDs)
{
using (var context = new MyDatabaseContext())
{
return context.Products.Where(product => prodIDs.Contains(product.ProductID)); // ['System.Array' does not contain a definition for 'Contains'] error because product.ProductID is long and prodIDs is an array of ints.
}
}