Работа с объектом

266
26 сентября 2021, 10:50

В Action Script 3 объявляется объектом такой "массив", а как объявить в C#?

public static const numbers:Object = {
    1:[1,3],
    2:[5,6]
}

И еще вопрос Получаю из базы данных строку values. Она представляет собой

{1:1}, {2:0}, {3:1}

Первый параметр Id, второй - значение. Как эту получаемую строку преобразовать в object (Id, значение) ?

Answer 1

В C# свойства не могут начинаться с цифр, но самым близким по смыслу будет такой код:

public static dynamic numbers = new
{
    _1 = new List<int>() { 1, 3 },
    _2 = new List<int>() { 5, 6 }
};

А самым нормальным такой

List<List<int>> numbers = new List<List<int>>()
{
    new List<int>() { 1, 3 },
    new List<int>() { 5, 6 },
};

UPD Можно и словарь, как правильно подсказал @AlexanderPetrov Структуры вполне заменяются друг другом. Можно будет использовать даже Dictionary<string, List<int>>, чтобы имитировать свойства.

Dictionary<int, List<int>> numbers = new Dictionary<int, List<int>>()
{
    { 1 , new List<int>() { 1,3 } },
    { 2 , new List<int>() { 5,6 } }
};

По второму вопросу надо разбирать строку. Если на коленке, то можно делать так:

var values = a.Replace('{', ' ').Replace('}', ' ').Split(',').Select(p => new {
    id = p.Split(':')[0],
    value = p.Split(':')[1],
});

Но лучше делать не аналогичные вещи, а переписать это на нормальное ООП на C#. Поскольку ActionScript динамический язык, а C# нет и не особо позволяет определять структуры данных прямо на лету. Точнее такой подход не приветствуется.

READ ALSO
Почему instance в синглтоне становится null?

Почему instance в синглтоне становится null?

Есть класс UIManager, написанный по принципу синглтона

133
Zabbix запрос. Запрос в C#

Zabbix запрос. Запрос в C#

По регламенту ZABBIX: HEADER> - "ZBXD\x01" (5 байт) DATALEN> - размер данных (8 байт)число 1 отформатируется в 01/00/00/00/00/00/00/00

99
Изменение protected field вне сборки

Изменение protected field вне сборки

Можно ли изменить значение вне сборки?

146