CS1503 C# Argument 2: cannot convert from 'int' to 'string'
Hey guys :)
Нещо не ми ставя ясно как да използвам иначе лесната функция на списъците Insert. Дава ми ей тази грешка от заглавието, а никъде в кода не използвам int като data type< та ми стана странно, че ми обяснява, че се опитвам да конвертирам в Int... Това, което искам е да се вземе третият елемент от command (който е Input-a) , който е номера наиндекса, където трябва да се постави втория елемент от command и толко' . С другите команди няма адове, ама това се прави. Не виждам защо ми разправя за конвертиране, при положение, че работа само със string, а самия метод Lists трябва да си имплементира командите Add, Remove, Insert по негов си начин. Защо ми го прави толкова сложно?
using System;
using System.Collections.Generic;
using System.Linq;
namespace Lists_Exercise
{
class Program
{
static List<string> CommandChecker(ref List<string> wagons)
{
List<string> command = Console.ReadLine().Split().ToList();
while (command[0] != "end")
{
if (command[0] == "Delete")
{
while (wagons.Contains(command[1]))
{
wagons.Remove(command[1]);
}
}
else if (command[0] == "Insert")
{
wagons.Insert(command[1], command[2]);
}
command = Console.ReadLine().Split().ToList();
}
return wagons;
}
static void Main(string[] args)
{
List<string> wagons = new List<string>();
wagons = Console.ReadLine().Split().ToList();
CommandChecker(ref wagons);
}
}
}
OK, забравих да спомена, че пробвах тези неща, защото са от първите, към които да прибягна. Как ли не го въртях да го конвертирам и туй то. Ако му сложа директно няква цифра - заспива. Опитвам с парсване, с Convert.ToInt32, кво ли не. Всичко ми го дава, че е валидно, но това продължава да си седи с тази тъпа грешка
Мани го последното! Сетих се аз да си копна кода и да рестартирам VS и стана... Аз от изпита не го бях гасил това :D Последвах съвета Ви, че даже си го набих в променлива, за да не работя в/у оригиналния list :)
Ето ти го кода работи 100/100 - имам само една малка забележка - защо използваш реф? Виждал съм и други да го използват просто така наляво и надясно ... малко е безмислено. Промених ти и метода на воид - все пак работиш с референтен тип и в този случай не е нужно да връщам нова колекция, а само да променя старата..
using System;
using System.Collections.Generic;
using System.Linq;
namespace Lists_Exercise
{
class Program
{
static void CommandChecker(List<string> wagons)
{
List<string> command = Console.ReadLine().Split().ToList();
while (command[0] != "end")
{
if (command[0] == "Delete")
{
while (wagons.Contains(command[1]))
{
wagons.Remove(command[1]);
}
}
else if (command[0] == "Insert")
{
wagons.Insert(int.Parse(command[2]), command[1]);
}
command = Console.ReadLine().Split().ToList();
}
}
static void Main(string[] args)
{
List<string> wagons = new List<string>();
wagons = Console.ReadLine().Split().ToList();
CommandChecker(wagons);
Console.WriteLine(string.Join(" ", wagons));
}
}
}
Приемам ми го 100/100. Знам за ref, но нещо не съм овлядял добре методите и като опитам да работя с масиви и списъци, без да ползвам ref, при преминаването от един метод в друг ми се нулира стойността на масива/списъка. Правя някаква тъпотия явно, но сега разглеждам с дебъгера Вашия код... Не мисля, че съм правил нещо по - различно w minaloto, но добре :D Сега ще го поупражнявам заедно с листовете.