Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 71

Присваивание...

29.10.2010, 22:18. Показов 1510. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстыуйте! вот фрагменты моего кода:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 private List<FractionCillection> TableStr = new List<FractionCillection>(); // (*)
private List<FractionCillection> TableFr = new List<FractionCillection>();
 
 
TableFr = TableStr; // (**)
 
for (int i = 0; i < TableStr.Count - 1; ++i)
{
if (i == 0)
{
      for (int j = 0; j < TableStr[0].Count; ++j)
      {
            TableFr[i][j] = new Fraction();
       }
        for(int j = TableStr[0].Count; j < TableStr[0].Count + TableStr.Count - 1; ++j) 
       {
              TableFr[i].Add(new Fraction(1)); // (***)
        }
}
else if (i == TableFr[i].Count - TableStr[0].Count) TableFr[i].Add(new Fraction(1));
else TableFr[i].Add(new Fraction());
Есть две "таблицы" с дробными числами(*), затем одну приравниваю к другой(**). Затем к таблице TableFr добавляю новые элементы(***)... Но одновременно изменяется и исходная TableStr. Подскажите почему? Что я не так делаю? Присваивание не в цикле...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2010, 22:18
Ответы с готовыми решениями:

Присваивание объектов
У меня есть такой вопрос когда 2 объекта присваиваем,когда меняем один объект другой тоже меняется , но мне нужно что менялось только тот...

Присваивание Items
Добрый день! Интересует вот что. Как в C# передать значение из listBox1.Items одной формы в comboBox1.Items другой формы? ...

Объекты, их присваивание
Читаю Троелсена, у него в примерах есть нечто подобное: Shape myShape = {new Hexagon(&quot;Имя шестиугольника&quot;), new Circle(&quot;Имя...

7
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
29.10.2010, 23:16
потому что это ссылочные типы, т.е. ты получаешь не копию таблицы, а ссылку на нее.

Добавлено через 1 минуту
прочитай про MemberwiseClone, хотя тоже есть свою нюансы. Можно создать копию объекта, через сериализацию.
1
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 71
29.10.2010, 23:25  [ТС]
Как через сериализацию?
0
145 / 145 / 26
Регистрация: 09.10.2009
Сообщений: 261
29.10.2010, 23:28
Вы присваиваете указатель. Пробуйте вот это:
C#
1
List<FractionCillection> TableFr = new List<FractionCillection>(TableStr);
Либо, как указали выше, - сериализацию.

Добавлено через 2 минуты
Вот ваша тема: Копирование объекта List<> - последний пост.
0
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 71
29.10.2010, 23:29  [ТС]
Та же проблема... Буду читать про сериализацию
0
145 / 145 / 26
Регистрация: 09.10.2009
Сообщений: 261
29.10.2010, 23:30
Цитата Сообщение от Ryabinin313 Посмотреть сообщение
Та же проблема... Буду читать про сериализацию
Ссылку выше добавил.
1
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
30.10.2010, 00:41
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//класс, который создает копию объекта
 class Cloner
    {
        public static object Clone(object something)
        {
            int defaultCapacity = 2048;
            XmlSerializer serializer = new XmlSerializer(something.GetType());
            MemoryStream tempStream = new MemoryStream(defaultCapacity);
            serializer.Serialize(tempStream, something);
            tempStream.Seek(0, SeekOrigin.Begin);
            return serializer.Deserialize(tempStream);
        }
    }
 
//пример использования
новый_объект = (тип_объекта,_который_клонируешь)Cloner.Clone(объект,_который_клонируешь);
кстати, не забудь добавить атрибут [Serializable] для класса, который будешь сериализовать
1
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 71
30.10.2010, 02:13  [ТС]
Сделал так. Все работает.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private FractionCillection Copy(FractionCillection fc)
        {
            FractionCillection fcIn = new FractionCillection();
            for (int i = 0; i < fc.Count; ++i)
            {
                Fraction tp = new Fraction(fc[i]);
                fcIn.Add(tp);
            }
            return fcIn;
        }
 
private List<FractionCillection> CopyTable(List<FractionCillection> fc)
        {
            List<FractionCillection>  fcIn = new List<FractionCillection>();
            for (int i = 0; i < fc.Count; ++i)
            {
                FractionCillection tp = new FractionCillection();
                tp = Copy(fc[i]);
                fcIn.Add(tp);
            }
            return fcIn;
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2010, 02:13
Помогаю со студенческими работами здесь

Не работает присваивание
Пример из Шилдта выдает ошибку, что, мол, левая часть должна быть переменной, индексатором или свойством. for (i = 0; i &lt; 5; i++) ...

Присваивание ссылок
Всем привет! Начал изучать C# по книжке C# in a nutshell, возникло несколько вопросов относительно ссылочных типов. Есть класс Панда...

Присваивание массива
Здравствуйте! Я новичок. Я пока учу переменные и массивы. Я люблю компьютерные игры и благодаря им я пытаюсь воссоздать некое подобие игры...

Присваивание ссылок на массивы
Допустим есть выражение: int a = new int { 1, 2, 3, 4, 5 }; int b; b = a; b = 99; Console.WriteLine(a); // 99 Почему...

Присваивание статических переменных
Есть статический клас: static public class Options { static public string CompilerLine = &quot; &quot;; static...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru