TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/

Как сделать «глубокий» массив с разными типами данных в C#?

Здравствуйте!
Только начал изучить C# и сразу же столкнулся с такой проблемой:
В моём опыте PHP и я мог использовать "глубокие" массивы с разными форматами ключей и их значений. Более того, само значение могло становится массивом, в котором тоже комбинировались типы данных.
Получилось что-то вроде вот этого:
2NQvWfrBJns.jpg
Т.е. в массиве лежит ID рекламной сети, а внутри этого ключа есть значения названия и utm_source.
Подобная структура так же есть в JSON.

В C# же я такого не обнаружил, найден был только строгий dictionary, который имеет Ключ:Значение. Но хотелось бы что-то похожее на PHP массивы, ибо необходимо хранить много значений, их названий и дополнительных параметров.

Заранее спасибо!
  • Вопрос задан
  • 5099 просмотров
Решения вопроса 1
tomnolane
@tomnolane
профессиональный разработчик
в вашем случае, (лично я) использовал бы примерно так:
Dictionary<string, string[]> wordDictionary = new Dictionary<string, string[]>();
wordDictionary.Add("YANDEX", new string[] {'yandex1','yandex2'});
wordDictionary.Add("GOOGLE", new string[] {'google1','google2'});


или так

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            List<UserInfo> my_list = new List<UserInfo>();
			my_list.Add(new UserInfo { name = "Вася", age = 19, male = true});
			my_list.Add(new UserInfo { name = "Маша", age = 23, male = false});

            Dictionary<string, UserInfo> dic = new Dictionary<string, UserInfo>();
            dic.Add("YAndeX", my_list[0]);
            dic.Add("GooGle", my_list[1]);

            foreach (var temp in dic)
            {
                Console.WriteLine("Key: " + temp.Key + " Value: Age" + temp.Value.age + " Name: " + temp.Value.name + " is male: " + temp.Value.male);
            }
            Console.ReadLine();
        }
    }

    class UserInfo
    {
        public string name { get; set; }
        public int age { get; set; }
        public bool male { get; set; }
    }
}


--------------------------------------------------------

надеюсь вам поможет:
1) массивы для знакомства
2) кортеж
3) класс Dictionary< TKey, TValue >
using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class UserInfo
    {
        // Метод, реализующий словарь
        public static Dictionary<int, string> MyDic(int i)
        {
            Dictionary<int, string> dic = new Dictionary<int,string>();
            Console.WriteLine("Введите имя сотрудника: \n");
            string s;
            for (int j = 0; j < i; j++)
            {
                Console.Write("Name{0} --> ",j);
                s = Console.ReadLine();
                dic.Add(j, s);
                Console.Clear();
            }
            return dic;
        }
    }

    class Program
    {
        static void Main()
        {
            Console.Write("Сколько сотрудников добавить? ");
            try
            {
                int i = int.Parse(Console.ReadLine());
                Dictionary<int, string> dic = UserInfo.MyDic(i);

                // Получить коллекцию ключей
                ICollection<int> keys = dic.Keys;

                Console.WriteLine("База данных содержит: ");
                foreach (int j in keys)
                    Console.WriteLine("ID -> {0}  Name -> {1}",j,dic[j]);
            }
            catch (FormatException)
            {
                Console.WriteLine("Неверный ввод");
            }

            Console.ReadLine();
        }
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы