Это программа на C#.
У меня на плате есть несколько микроконтроллеров, каждый из которых может иметь разные конфигурации.
Чтобы описать это, я создаю класс Config, который определяет конфигурацию (имя, число и т. д.)
Среди полей конфигурации находится массив из 4 байтов.
Сейчас я делаю пару конфигураций, затем задаю их значения.
Это работает.
Теперь я попробую одновременное создание конфигураций и установка значений. Это не работает. В итоге массив имеет одинаковые значения в обеих конфигурациях, даже если они являются отдельными объектами. Никаких предупреждений и ошибок.
Вот код. В комментариях вы узнаете, что пошло не так.
public class Config
{
public byte ConfigNum { get; set; }
public byte[] ConfigData { get; set; } = new byte[4];
}
static void Main()
{
Config c0 = new Config();
Config c1 = new Config();
c0.ConfigNum = 11;
c0.ConfigData[3] = 13;
c1.ConfigNum = 22;
c1.ConfigData[3] = 23;
// Check whats in there
Console.WriteLine(c0.ConfigNum); // Expect 11
Console.WriteLine(c0.ConfigData[3]); // Expect 13
Console.WriteLine(c1.ConfigNum); // Expect 22
Console.WriteLine(c1.ConfigData[3]); // Expect 23
// Now try to make configurations on the fly
byte[] RConfigData1 = { 11, 12, 13, 14 }; // Make a temporary array
Config c3 = new Config() // Make and add a configuration with the values in the temporary array
{
ConfigNum = 55,
ConfigData = RConfigData1
};
RConfigData1[3] = 24; // change a value in the temporary array
Config c4 = new Config() // Make and add a configuration with the values in the temporary array
{
ConfigNum = 66,
ConfigData = RConfigData1
};
// Check whats in there
Console.WriteLine(c3.ConfigNum); // Expect 55
Console.WriteLine(c3.ConfigData[3]); // Expect 14 BUT GET 24
Console.WriteLine(c4.ConfigNum); // Expect 66
Console.WriteLine(c4.ConfigData[3]); // Expect 24
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-an-obje
У меня проблемы с иерархией объектов. В частности, массив в объекте, который используется в другом объекте. ⇐ C#
Место общения программистов C#
1734125554
Anonymous
Это программа на C#.
У меня на плате есть несколько микроконтроллеров, каждый из которых может иметь разные конфигурации.
Чтобы описать это, я создаю класс Config, который определяет конфигурацию (имя, число и т. д.)
Среди полей конфигурации находится массив из 4 байтов.
Сейчас я делаю пару конфигураций, затем задаю их значения.
Это работает.
Теперь я попробую одновременное создание конфигураций и установка значений. Это не работает. В итоге массив имеет одинаковые значения в обеих конфигурациях, даже если они являются отдельными объектами. Никаких предупреждений и ошибок.
Вот код. В комментариях вы узнаете, что пошло не так.
public class Config
{
public byte ConfigNum { get; set; }
public byte[] ConfigData { get; set; } = new byte[4];
}
static void Main()
{
Config c0 = new Config();
Config c1 = new Config();
c0.ConfigNum = 11;
c0.ConfigData[3] = 13;
c1.ConfigNum = 22;
c1.ConfigData[3] = 23;
// Check whats in there
Console.WriteLine(c0.ConfigNum); // Expect 11
Console.WriteLine(c0.ConfigData[3]); // Expect 13
Console.WriteLine(c1.ConfigNum); // Expect 22
Console.WriteLine(c1.ConfigData[3]); // Expect 23
// Now try to make configurations on the fly
byte[] RConfigData1 = { 11, 12, 13, 14 }; // Make a temporary array
Config c3 = new Config() // Make and add a configuration with the values in the temporary array
{
ConfigNum = 55,
ConfigData = RConfigData1
};
RConfigData1[3] = 24; // change a value in the temporary array
Config c4 = new Config() // Make and add a configuration with the values in the temporary array
{
ConfigNum = 66,
ConfigData = RConfigData1
};
// Check whats in there
Console.WriteLine(c3.ConfigNum); // Expect 55
Console.WriteLine(c3.ConfigData[3]); // Expect 14 BUT GET 24
Console.WriteLine(c4.ConfigNum); // Expect 66
Console.WriteLine(c4.ConfigData[3]); // Expect 24
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79279607/i-am-having-trouble-with-hierarchy-in-objects-particularly-an-array-in-an-obje[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия