Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Структура типа распределения по интервалам


Автор: koder 7.12.2007, 19:57
а если вот такую структуру использовать это хороший стиль?

Код

struct Range{
public float StartRange; //начальная частота
public float EndRange;   //конечная частота
public float StepRange;  //шаг сетки
public float ActualFreq; // фактич. частота
public float StartDisp; // распредление
public float EndDisp; // распредление
public float DiffDisp; // разница EndDisp - StartDisp;
public float TheorFreq; // теоретическая частота
public float DeviationFreq; //отклонение частот
public float WeighedSqDeviationFreq; // Взвешенный квадрат отклонения частот
//массив доступных фиксированных частот диапазона
}


Автор: stab 7.12.2007, 21:23
смотря для чего использовать..

Автор: mr_max 7.12.2007, 21:25
Использовать на выходе функции, после чего когда мы получим на выход массив структуры, то выводим его в табличку эти значения.. ВОт как.

Автор: koder 7.12.2007, 21:29
 smile 

Автор: stab 7.12.2007, 21:33
koder, кто это был? ))

Автор: tol05 7.12.2007, 21:34
ИМХО это очень плохой стиль. Структуры - типы, копируемые по значению и их нужно делать неизменяемыми. 
вариант 1:  поля - private и свойства только get
вариант 2: public поля, но readonly. 
А вместо того, чтобы изменять значения полей в структуре - лучше пересоздавать ее заново.

Автор: stab 7.12.2007, 21:47
.. пожалуй самая большая опасность - использование свойств с такими типами, каждое чтение любого поля структуры через свойство сводится к копированию всей структуры в "локальную переменную" с последующем чтением одного единственного поля. так что, структуры эффективны и оправданны для небольшого объёма данных.

Автор: tol05 7.12.2007, 22:53
ну тогда я добавлю, что:
Первое. Структуры чаще всего создают для логической группировки данных, используемых во многих местах кода (и эта структура - не исключение, она ИМХО содержит настройки чего-то). Я предполагаю, что многие объекты программы будут иметь поля-экземпляры этой структуры. И все будет здорово, пока в какой-то момент не станет нужным будет поменять какое-нибудь поле структуры.
Вот и пришла асталависта программе... Я не говорю даже про синхронизацию записи/чтения между потоками, даже в однопоточном приложении поле поменяется только в одном экземпляре структуры (в том, через который осуществляется доступ к полю). А во всех остальных местах - нет...

Второе. Упаковка/распаковка структур при работе с коллекциями... Любыми, даже с полностью типизированным List<Range>. Тоже будет весело. 
Ну и еще кое-какие траблы могут быть ...  smile Но это уже из категорий редкостей. 

вот пример 
Код

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 Найти цитируемый пост)
так что, структуры эффективны и оправданны для небольшого объёма данных
 но только на чтение

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)