Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Уважайте чужое время
75 / 23 / 8
Регистрация: 01.02.2013
Сообщений: 191

Double[][] упаковка/распаковка в тип object

24.05.2014, 22:36. Показов 2222. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня в методе возвращается массив данных разного типа, чтобы не возникало конфликтов (данные инициализируются и присваиваются внутри метода) мне показалось достаточно простым выходом создать массив объектов на выходе, каждому объекту из которого присваиваю данные нужного мне (разного: от int до double[][]) типа.

Пример не абстрагировал, вырезал "как есть" нужные для понимания строки, кому интересно, разверните:
Кликните здесь для просмотра всего текста
Получается следующее:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* ... */
            public object[] getOutp(double[][] inP)
            {
                double[][] h_inP = new double[K][];
                double[] o_inP = new double[K];
            /* вычисления и т.п., в т.ч. вызов output.get_output() */
                return new object[] {output.get_output()/* тип int */, h_inP, o_inP};
            }
 
            public void some_main_method()
            {
                object[] res1 = t1.getOutp(inP), res2 = t2.getOutp(inP);
                A = Convert.ToInt32(res1[0]);
                B = Convert.ToInt32(res2[0]);
                if (A == B) 
                { 
                    k++;
                    correct_weight(res1, res2, t1, t2);
                }
            }
 
            public void correct_weight(object[] res1, object[] res2, ArtNeuronNetwork t1, ArtNeuronNetwork t2)
            {
                t1.use_hebbs_rule(res1, res2);
                t2.use_hebbs_rule(res2, res1);
            }
 
/* other class */
            public void use_hebbs_rule(object[] r1, object[] r2)
            {
                for (int i = 0; i < input.GetLength(0); i++)
                {
                    input[i].hebbs_rule(r1, r2);
                }
            }
 
/* deeper class */
            public void hebbs_rule(object[] r1, object[] r2)
            {
                if (neuron_type == 0)
                {
                    for(int i=0;i<k;i++)
                    { /* Вот здесь все проблемы, я имею объекты, я хочу из них получить массивы, которые я изначально туда размещал. Т.е. конвертировать написанное в исходные типы данных. Реально ли это? */
                        weight[i] += input[i] * sgn(r1[1][s / N][s % N] * r1[2][s]) * sgn(r1[2][s] * r2[2][s]);
                    } /* Типа Convert.ToDouble(r1[1][s / N][s % N]) etc...*/
                }
            }
/* Естественно, что я сейчас не смогу скомпилировать обращение к объекту, как к массиву:
Ошибка    1   Невозможно применить индексирование через [] к выражению типа "object", etc...*/
/* ... */


Ну так реально ли конвертировать данные (особенно интересно о двумерных массивах) в тип object и обратно в данные нужных размерностей?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2014, 22:36
Ответы с готовыми решениями:

Распаковка object, если заранее не известен тип
Есть 2 класса с абсолютно одинаковыми свойствами. В программе создаются экземпляры этих классов. Затем передаются для обработки в метод...

Упаковка и распаковка
Задачи: 1. Создать структуру с двумя полями и методами: ввода и вывода. 2. Создать еще один класс, у которого сделать два поля: 2...

Упаковка и распаковка
В object можно загнать все что угодно, но как получить обратно? Например запаковать тип byte и затем обратно byte b = { 1, 2, 3, 4,...

2
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
24.05.2014, 22:55
Лучший ответ Сообщение было отмечено big1991 как решение

Решение

Цитата Сообщение от big1991 Посмотреть сообщение
реально ли конвертировать данные (особенно интересно о двумерных массивах) в тип object и обратно в данные нужных размерностей?
запросто, например
C#
1
(double[][])myobject
проблема в том, что код станет непонятным, и в большинстве случаев можно обойтись без приведения к object в программе.
1
Уважайте чужое время
75 / 23 / 8
Регистрация: 01.02.2013
Сообщений: 191
24.05.2014, 23:01  [ТС]
Пока ждал ответ, полазил по форуму и нашёл ответ на похожий вопрос, по нему написал такое:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public void hebbs_rule(object[] res1, object[] res2, int s, int N)
        {
            int k = weight.GetLength(0);
            if (neuron_type == 0)
            {
                for(int i=0;i<k;i++)
                {
                    var h1 = res1[1] as double[][];
                    var o1 = res1[2] as int[];
                    var o2 = res2[2] as int[];
                    weight[i] += input[i] * sgn(h1[s / N][s % N] * o1[s]) * sgn(o1[s] * o2[s]);
                }
            }
        }
Насчёт работоспособности не знаю, но компилируется

rattrapper, благодарю! Так короче =)

Цитата Сообщение от rattrapper Посмотреть сообщение
в большинстве случаев можно обойтись без приведения к object в программе
Спасибо за замечание, подумаю над оптимизацией после достижения программой состояния работоспособности
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2014, 23:01
Помогаю со студенческими работами здесь

Упаковка / распаковка (boxing/unboxing)
Привет всем.Я хочу задать вопрос про упаковки/распаковки(boxing/unboxing). если у меня есть struct Point , и я создаю объект в стеке...

Упаковка, распаковка значений. Не работает. Код внутри.
Есть такое дело, как упаковка и распаковка но почему-то у меня не работает. Окно авторизации: public partial class...

Тип dynamic и object ConstructorInfo.Invoke(object[] parameters)
dynamic tob = ci.Invoke(new object{10,&quot;привет&quot;}); Console.WriteLine(tob.A()); ошибка :...

Цикл for и тип double. Переменная округляется, хотя объявлена как Double
using System; class zada4ka_5_32 { static void Main() { int n; double sum = 0.0; double j;...

Не удается неявно преобразовать тип double в тип int
class Program { static void Main(string args) { double k = 0; Random r = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru