C# | Invalid expression term '[' (Array.IndexOf()
уважаемые знатоки! Прошу не бить, я новичок. Мне нужно проверить, есть ли в введённом сочетании букв символы и буквы из массивов, я нашёл, что это вроде как можно сделать через Array.IndexOf(). В попытках понять, как вставить в метод целый массив, я столкнулся с тем, что VS2019 выдаёт ошибку на [ в начале массива(Выделил жирным в коде). Подскажите, пожалуйста, как решить эту проблему, или же правильный метод для указанной задачи, если я выбрал не тот. (Дальше в коде идёт несколько операторов if, но там вcё правильно)
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Enter password:");
string pass = Console.ReadLine();
string [] letters = { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M" };
string [] symbols = {"!", "@", "'", "#", "№", "$", ";", "%", "^", ":", "&", "?", "*", "(", ")", "/", "|", "+", "=", "-"};
int caps = Array.IndexOf(letters, [ "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M" ]);
int sym = Array.IndexOf(symbols, [ "!", "@", "'", "#", "№", "$", ";", "%", "^", ":", "&", "?", "*", "(", ")", "/", "|", "+", "=", "-"]);
Ответы (1 шт):
в c# нет литерала массива.
Поэтому просто написать [...] нельзя.
Нужно создать объект, для чего используется оператор new, например:
int caps = Array.IndexOf(letters, new [] { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M" });
Кроме того, вторым параметром должен идти элемент, индекс которого нужно найти, однако в коде выше передается массив.
То есть должно было быть так:
int caps = Array.IndexOf(letters, "W");
либо так:
int caps = Array.IndexOf(new [] { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M" }, "W");