#c# #.net #linq
#c# #.net #linq
Вопрос:
Я пытаюсь использовать массив.Содержит метод () в C #, и по какой-то причине ему не удается скомпилироваться, хотя я считаю, что использую C # 4.0, и C # должен поддерживать это в версии 3.0 и более поздних версиях.
if (! args.Contains ("-m"))
Console.WriteLine ("You must provide a message for this commit.");
И я получаю эту ошибку:
Main.cs(42,15): ошибка CS1061: ‘Система.Массив ‘не содержит определения для ‘Contains’, и ни один метод расширения ‘Не содержит’ принимающий первый аргумент типа ‘System.Удалось найти массив’ (вам не хватает директивы using или ссылки на сборку?)
Я выполняю компиляцию из командной строки без параметров: «csc Main.exe «.
Комментарии:
1. Прочитайте сообщение об ошибке. Это говорит вам, что не так. Вам не хватает либо ссылки на сборку, либо директивы using .
Ответ №1:
Вам нужно добавить using System.Linq;
в начале вашей программы.
Ответ №2:
Ты забыл using System.Linq
?
Кстати, если вы не можете использовать LINQ, есть много других вариантов, таких как Array.Exists
.
Комментарии:
1. Или
Array.Contains
, который делает то же самое, что и он хочет. Но он, очевидно, использует C # 3.5, поэтому нет причин, по которым он не мог бы использовать Linq.
Ответ №3:
Если вы не хотите использовать linq, попробуйте
((IList<string>)args).Contains("-m")
Ответ №4:
В ответах говорится, что нужно включить 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.
}
}
Комментарии:
1. Это была именно та проблема, с которой я столкнулся. Я продолжал просматривать этот оператор using в поисках опечаток. Сбивает с толку!
Ответ №5:
У меня была та же проблема, и у меня
using System.Linq
Это было потому, что я пытался сравнить string с int, но почему-то он говорил
‘Система.Массив’ не содержит определения для ‘Содержит’
Ответ №6:
Убедитесь, что вы используете правильную версию CSC (csc /?) — вам нужна версия 2010 для компиляции 4.0. Вам также может потребоваться добавить дополнительные библиотеки (опция /r) для успешной компиляции.