Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2015, 16:45   #1
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
Восклицание Изменить часть объекта в коллекции.

Здравствуйте!Проблема заключается в том, что мне нужно изменить часть объекта в коллекции, неважно какой, проблема везде одинаковая:

Код:
class Program
    {
        static void Main(string[] args)
        {
            Dictionary<int, Point> pDictionary = new Dictionary<int, Point>();
            pDictionary.Add(1,new Point(15,20));
           
            pDictionary[1].y = 15;//проблема тут, невозможно изменить так как не является переменной
            Console.WriteLine("{0}:{1}", pDictionary[1].x, pDictionary[1].y);
            

        }
    }

    public struct Point
    {
        public int x;
        public int y;
        public Point(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
в c++ и обычном массиве c# такого не было, и да я понимаю, что индексатор, что метод get в нем не позволяет изменить его, мне нужно знать, есть ли способ изменить часть объекта в коллекции, и что это за способ.Если объект будет содержать оочень много полей то будет сложно без этого.
DimDimich вне форума Ответить с цитированием
Старый 19.02.2015, 16:51   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык у вас по-моему в struct проблема, а не в "индексаторе". struct неизменяемы в C#. Используйте класс или пересоздавайте объект ([1] = new Point(...)).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2015, 16:56   #3
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Дык у вас по-моему в struct проблема, а не в "индексаторе". struct неизменяемы в C#. Используйте класс или пересоздавайте объект ([1] = new Point(...)).
хорошо, оно работает с классом,спасибо.дело в том что я в формах затолкал в словарь элементы textbox , а изменить свойство textboxList[1].Text не получается, то есть компилятор ничего не говорит мне и ничего не происходит, текст не добавляется.
спасибо.
Код:
if (openFileDialog1.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
            mdiList[activeWindow].Text = openFileDialog1.FileName;
            StreamReader sr = new StreamReader(openFileDialog1.FileName, Encoding.GetEncoding(1251));
            mdiList[activeWindow].TextArea.Text = sr.ReadToEnd();
            sr.Close();

Последний раз редактировалось DimDimich; 19.02.2015 в 16:59.
DimDimich вне форума Ответить с цитированием
Старый 19.02.2015, 17:02   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Должно работать и с текстбоксами, видимо проблема не в этом.
Текст-то читается вообще?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2015, 17:10   #5
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

текст считывается и если textbox не в коллекции то все впорядке и его записывает, когда я ставлю коллекцию, то текст в текстбокс не пишется...
DimDimich вне форума Ответить с цитированием
Старый 19.02.2015, 17:17   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

TextArea это что?

Словарь как создаете? Может там другие текстбоксы. Например, созданные вами, а не с формы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2015, 17:19   #7
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

что такое mdiList и что в нем?
Цитата:
TextArea
это что?
lomastr_ вне форума Ответить с цитированием
Старый 19.02.2015, 17:20   #8
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
struct неизменяемы в C#
вообще-то изменяемы. Здесь - частный случай
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 19.02.2015 в 17:23.
Luuzuk вне форума Ответить с цитированием
Старый 19.02.2015, 17:25   #9
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

вообщем это уже вопрос другой темы, эту проблему с изменением объекта внутри коллекции решил.Всем спасибо
DimDimich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery, изменить свойство объекта Mortimoro JavaScript, Ajax 4 08.04.2013 20:22
LINQ. Как изменить данные одного из полей в коллекции? kenji C# (си шарп) 20 21.10.2012 17:19
Изменить свойства динамически созданного объекта Marsel737 Общие вопросы Delphi 5 16.01.2010 23:29
изменить часть объединенной ячейки невозможно Shaytan Microsoft Office Excel 3 19.08.2009 10:02
Изменить размер объекта Comment Васкинс Microsoft Office Excel 4 16.07.2008 14:11