Member 14672509 Ответов: 3

Невозможно неявно преобразовать тип 'string[]' в 'string' в WPF


Им пытаются добавить элемент управления ListBox сохранить в XML страницы, im новое к массив string, как использовать массив string, чтобы получить элемент списка по одному.

Как решить эту проблему ??

Спасибо,

Что я уже пробовал:

string[] Number;
       private SOTA_whitelist_Number RetrieveSOTAConfiguration()
       {

           int i = 1;
           for (i = 1; i < ListBox_PhoneNumber.Items.Count; i++ )
           {
               Number[i] = ListBox_PhoneNumber.Items[i].ToString();
           }
               return new SOTA_whitelist_Number(Number);
       }


public SOTA_whitelist_Number(string[] Number)
        {
            this.whitelist_Number = new st_SOTA_Whitelist_Number(Number.ToCharArray());        
            
            this.Number[i] = Number[i];
        }

        //Setter and Getters
        public string NUMBER
        {
            set { Number = value; OnPropertyChanged("Number"); }
            get { return Number; }
        }
        //Methods  
        public void PrintSOTAConfiguration()
        {
            Console.WriteLine("\n NUMBER1: {0}", NUMBER1);
        }
        public st_SOTA_Whitelist_Number getStructure()
        {
            return whitelist_Number;
        }

        public void setSOTAwhitelist_Number(st_SOTA_Whitelist_Number whitelist_Num)
        {
            NUMBER1 = whitelist_Num.NUMBER1;
        }
        
        //PAYLOAD STRUCTURE
    [StructLayout(LayoutKind.Sequential, Pack = 0)]
    public struct st_SOTA_Whitelist_Number
    {
        char[] Number;
        ushort payload_length;
        
        //Constructor
        public st_SOTA_Whitelist_Number(char[] Number1)
        {
            this.Number = new char[CommandDefine.MAX_SIZE.MAX_NUMBER1_STR_SZ];
            
            Common.InitToZero(ref this.Number);

            Array.Copy(Number,  this.Number,  Number.Length);

            Console.WriteLine("Constructor..");
            this.payload_length = CommandDefine.MAX_SIZE.MAX_NUMBER1_STR_SZ;
        }


его показывает ошибка как :
1. 'System.Array' does not contain a definition for 'ToCharArray' and no extension method 'ToCharArray' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an assembly reference?)	
2. Cannot implicitly convert type 'string[]' to 'string'	

3 Ответов

Рейтинг:
1

Kornfeld Eliyahu Peter

В общем, похоже, что вы не определились, где вам нужна строка, а где их массив...
Глядя на цикл, который вы имеете в первом блоке кода, метод SOTA_whitelist_Number должен получить параметр string, а не string[]...


Рейтинг:
0

OriginalGriff

Посмотрите на свой код:

public SOTA_whitelist_Number(string[] Number)
        {
            this.whitelist_Number = new st_SOTA_Whitelist_Number(Number.ToCharArray());
Number это массив строк, который определяется объявлением метода teh.
Массив строк-это набор наборов символов (потому что каждая строка-это набор символов, а массив and-это набор символов).
Вы не можете преобразовать коллекцию коллекций символов в массив символов!

Я подозреваю, что вы хотите передать одну строку из коллекции в другую. SOTA_whitelist_Number вместо всего массива, что означает изменение определения метода и вызова к нему - но какого именно, я понятия не имею!


Рейтинг:
0

CPallini

Цитата:
этот.whitelist_Number = новый st_SOTA_Whitelist_Number(номер.ToCharArray());
Вы пытаетесь извлечь массив символов из массива строк. Это, вероятно, логическая ошибка (а также синтаксическая ошибка).

Цитата:
this.Number[i] = число[i];
Что такое i в таком контексте? Это выглядит еще одной логической ошибкой.


Member 14672509

затем как преобразовать массив символов в массив строк.