Неясное поведение в списке и/или классом - C#

Узнай цену своей работы

Формулировка задачи:

Есть программа с написанным классом:
public class HyperFile
    {
        ushort width;
        byte height;
        byte[] kg = new byte[6];
        byte[] kbsb = new byte[6];
        byte kbst, kdchk;
        byte KS1, KS2;
        bool LK1, LK2;
        uint[] amp1 = new uint[4];
        uint[] amp2 = new uint[4];
    }
В программе организован список типа HyperFile:
private List<HyperFile> Hyperfiles = new List<HyperFile>();
И существует странное поведение при изменении полей определенного экземпляра класса, например:
HyperFiles[index].KS1 = 100;
- изменяет значение поля KS1 в конкретном, одном экземпляре HyperFiles[index], но:
HyperFiles[index].kg[0] = 10;
- изменяет значение поля kg[0] во всех объектах в списке.
byte[] KG = new byte[]{10,20,30,40,50,60};
HyperFiles[index].kg = KG
- работает нормально, только на один экземпляр В чем может быть причина такого неясного поведения? Среда MS Visual Studio 2010

Решение задачи: «Неясное поведение в списке и/или классом»

textual
Листинг программы
for (int index = 0; index < HyperFiles.Count; index++)
{
    byte[] KG = new byte[] { 10, 20, 30, 40, 50, 60 };
    HyperFiles[index].kg = KG;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы