Loading...
VesselinTonchev avatar VesselinTonchev 5 Точки

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);
        }
    }
}

 

Тагове:
0
Module: C# Advanced
nickwork avatar nickwork 657 Точки

Привет, ...как работи insert - wagons.Insert(command[1], command[2]); - там където ти е command[1] очаква да му подадеш индекс (или казано по друг начин позицията на която да добави, command[2] ти е аргумента който да добавиш). В твоя случай ти работиш с лист от стрингове и command[1] ти е стринг...именно заради това ти дава грешка, компилатора не разбира на кой индекс искаш да инсъртнеш. Сложи някакъв валиден индекс и ще заработи...ако индекса го получаваш от command[1],. то тогава трябва да го парснеш int.Parse(command[1]), че от стринг да ти стане инт...

0
VesselinTonchev avatar VesselinTonchev 5 Точки

OK, забравих да спомена, че пробвах тези неща, защото са от първите, към които да прибягна. Как ли не го въртях да го конвертирам и туй то. Ако му сложа директно няква цифра - заспива. Опитвам с парсване, с Convert.ToInt32, кво ли не. Всичко ми го дава, че е валидно, но това продължава да си седи с тази тъпа грешка

0
VesselinTonchev avatar VesselinTonchev 5 Точки

Мани го последното! Сетих се аз да си копна кода и да рестартирам VS и стана... Аз от изпита не го бях гасил това :D Последвах съвета Ви, че даже си го набих в променлива, за да не работя в/у оригиналния list :) 

0
nickwork avatar nickwork 657 Точки

Ето ти го кода работи 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));
        }
    }
}

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.