ну тогда я добавлю, что: Первое. Структуры чаще всего создают для логической группировки данных, используемых во многих местах кода (и эта структура - не исключение, она ИМХО содержит настройки чего-то). Я предполагаю, что многие объекты программы будут иметь поля-экземпляры этой структуры. И все будет здорово, пока в какой-то момент не станет нужным будет поменять какое-нибудь поле структуры. Вот и пришла асталависта программе... Я не говорю даже про синхронизацию записи/чтения между потоками, даже в однопоточном приложении поле поменяется только в одном экземпляре структуры (в том, через который осуществляется доступ к полю). А во всех остальных местах - нет...
Второе. Упаковка/распаковка структур при работе с коллекциями... Любыми, даже с полностью типизированным List<Range>. Тоже будет весело. Ну и еще кое-какие траблы могут быть ... Но это уже из категорий редкостей.
вот пример
| Код | public struct S { public int s1;
public S(int i) { s1 = i; } }
public class C { public int c1;
public C(int i) { c1 = i; } }
public class WorkClass { public C c; public S s; }
WorkClass test1 = new WorkClass(); WorkClass test2 = new WorkClass();
C c = new C(1); S s = new S(2);
test1.s = s; test2.s = s; test1.c = c; test2.c = c;
s.s1 = 10; c.c1 = 10; test1.s.s1 = 20; test1.c.c1 = 20;
List<S> ls = new List<S>(); ls.AddRange(new S[] { test1.s, test2.s }); S newS = ls[0]; newS.s1 = 100; S resultsS = ls[0];
|
Цитата(stab @ 7.12.2007, 20:47 ) | | так что, структуры эффективны и оправданны для небольшого объёма данных |
но только на чтение |