Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379

Не меняется значение поля

03.03.2016, 17:22. Показов 2184. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Такая ситуация:
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
        // Структура дерева
        public struct BTree
        {
            public int  t;      // минимальная степень дерева
            public Node root;   // указатель на корень дерева
        }
        
        // Структура узла
        public struct Node
        {
            public bool leaf;  // является ли узел листом
            public int n;      // количество ключей узла
            public int [] key   // ключи узла
            {
                get 
                {
                    return new int[3]{-1,-1,-1};
                }
            }
            public Node[] c   // указатели на детей узла
            {
                get 
                {
                    return new Node[4];
                }
            }
        }
 
        // Создание корня дерева
        public BTree CreatRoot(int key0)
        {
            BTree X = new BTree();
            X.root.leaf = true;
            X.root.n = 1;
            X.root.key[0] = key0;
            X.t = 3;
            return X;
        }
 
            // Корень B-дерева
            BTree root = new BTree();
            root = CreatRoot(records[0].Key);
records это объект типа List <Record> содержит пару Key,Value.
records[0].Key принимает значение типа int
при выполнении метода CreatRoot(int key) на строке
C#
1
X.root.key[0] = key;
ничего не происходит, хотя переменная key имеет int значение.

Почему так может происходить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2016, 17:22
Ответы с готовыми решениями:

Как прописать обновление этого поля – т.е. “oninput” по условию, что меняется значение поля с датой?
Есть поле для выбора дат публикаций объявления в форме… &lt;input type=&quot;text&quot; name=&quot;dt&quot; id=&quot;dt&quot; oninput='init(this.value)' ...

Не меняется значение поля после Post
Использую БД Firebird, запросы делаются из Delphi через FIBPlus. В таблице несколько числовых полей, мне нужно изменять значение поля...

Создание поля в DBGrid, значение которого присваивается ориентируясь на значение поля в базе данных SQL
Добрый день! Возник такой вопрос: Есть таблица базы данных, которая в числе прочих имеет параметр, показывающий, к какому отделу...

5
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.03.2016, 17:29
Цитата Сообщение от holod2014 Посмотреть сообщение
Почему так может происходить?
Потому что у вас везде структуры, которые полностью копируются при присваивании, передаче в метод и извлечении из метода.
Замените struct на class, добавьте где надо операторы new и жизнь наладится.
1
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
03.03.2016, 17:31  [ТС]
Спасибо. Буду пробовать))
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.03.2016, 17:32
C#
1
2
3
4
5
6
7
public int [] key   // ключи узла
            {
                get 
                {
                    return new int[3]{-1,-1,-1};
                }
            }
для поля key у тебя описано только получение значения, установки значения нету, а ты пытаешься его сделать... что-то тут не так)
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.03.2016, 17:50
holod2014, вот кстати, выше товарищ SeIZVeIZ точно подметил: вы при каждом обращении к свойству key создаете новый массив со значениями -1, который потом нигде не хранится, то есть возвращается "в никуда".
0
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
04.03.2016, 12:08  [ТС]
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
51
52
53
54
        // Структура дерева
        public class BTree
        {
            public int t;      // минимальная степень дерева
            public Node root{get;set;}   // указатель на корень дерева
 
            public BTree()
            {
            }
        }
        
        // Структура узла
        public class Node
        {
 
            public bool leaf {get; set;}  // является ли узел листом
            public int n {get;set;}       // количество ключей узла
            public int[] key   // ключи узла
            {
                get
                {
                    return new int[3];
                }
                set
                {
                }
            }
            public Node[] c   // указатели на детей узла
            {
                get
                {
                    return new Node[4];
                }
                set
                {
                }
            }
            // Конструктор
            public Node()
            {
 
            }
 
        }
 
        // Создание корня дерева
        public BTree CreatRoot(int key0)
        {
            BTree X = new BTree();
            X.root.leaf = true;
            X.root.n = 1;
            X.root.key[0] = key0;
            return X;
        }
C#
1
2
            BTree root = new BTree();
            root = CreatRoot(records[0].Key);
в строке
C#
1
            X.root.leaf = true;
при выполнении программы такая ошибка: "Ссылка на объект не указывает на экземпляр объекта."
смотрю что создает
C#
1
BTree X = new BTree();
X.t=0
X.root=null

А хочется чтобы X.root был не null, чтобы можно было полям root значения присваивать.
Подскажите поля root надо через конструктор инициализировать?

Добавлено через 34 минуты
вот так получилось
C#
1
2
3
4
5
6
7
8
9
10
11
        // Структура дерева
        public class BTree
        {
            public int t;      // минимальная степень дерева
            public Node root{get;set;}   // указатель на корень дерева
 
            public BTree()
            {
                this.root = new Node();
            }
        }
Добавлено через 52 минуты
Или даже лучше так:
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
        // Структура дерева
        public class BTree
        {
            public int t;                // минимальная степень дерева
            public Node root{get;set;}   // указатель на корень дерева
 
            public BTree()
            {
                this.root = new Node();
            }
        }
        
        // Структура узла
        public class Node
        {
 
            public bool leaf {get; set;}   // является ли узел листом
            public int n {get; set;}       // количество ключей узла
            public int[] key {get; set;}   // ключи узла
            public Node()
            { 
                this.key=new int[3];
                this.key[0] = new int();
                this.key[1] = new int();
                this.key[2] = new int();
            }
            
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2016, 12:08
Помогаю со студенческими работами здесь

Вычислить значение каждой суммы, если значение аргумента меняется с шагом 3
Выполнить задание 3 и 4

Копировать значение поля m_moo в значение поля m_moo класса foo
А что означает запись? Foo1(Foo1 const&amp; foo):m_moo(foo.moo) то что это к.копирования понятно.Не понятно,зачем список инициализации.... ...

Значение поля 2 является именем для поля 1 ( Сформировать JSON объект)
Коллеги, подскажите как решить или где посмотреть следующую информацию. У меня есть таблица: ID Fio Month Parametr ...

Задание ключом в объекте - значение поля ввода при динамическом создании поля
$(function() { var values = {}; $('&lt;br /&gt;'+ '&lt;input type=&quot;text&quot; class=&quot;field&quot; name=&quot;field&quot; value=&quot;12345&quot;&gt;'+ ...

Не заполняет значение поля, при выборе другого поля
У меня есть справичник ТарифЗарплатыВодителя, который имеет реквизиты: КатегорияВодителя и ТарифВодителя, документ Заявка и документ Доход....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru