Przekazywanie dużej ilości parametrów, błędy z wczytywaniem wartości do zmiennej

0

Witajcie,

Chciałbym przekazać metodom w pewnej klasie zmienne z innych klas. Tych zmiennych jest sporo 20-30.
Jak zrobić to najbardziej elegancko? Nie chce przekazywać tych zmiennych jako parametry tej metody- domyślam się, że tak się nie robi.

Z góry dziękuję za odpowiedź.

1

Pogrupuj te parametry w obiekty.
Ogólnie trochę za mało napisałeś o tym, jakie są powiązania między tymi klasami i jakiego rodzaju zmienne chcesz przekazywać.

0

Chce przesyłać float i int.
Klasy nie są ze sobą powiązane (nie dziedzicza po sobie itd).
Ogólnie wygląda to tak, że w jednej głównej klasie wykonywane są obliczenia, a w tych klasach do których chce przekazać zmienne liczone są współczynniki poprawkowe wykorzystywane w klasie głównej

1

chyba o to Ci chodzi: http://stackoverflow.com/questions/1996426/pass-multiple-optional-parameters-to-a-c-sharp-function

dalej możesz to też podzielić na metody(dla float i int), jeżeli nie chcesz tego dzielić na klasy(jak wyżej pisał @somekind)

0

Przeczytałem i nie wiem czy zrozumiałem to w odpowiedni sposób- chodzi o to aby wszystkie moje zmienne które chce udostępnić wrzucić do jednej tablicy i dopiero ta tablicę przekazać następnym klasom i metodom?

Może wytłumaczę dlaczego to musze zrobić.
Mam kod napisany w Fortaranie. Występuje tam Statement o nazwie "common". Jeśli w jednej metodzie wpiszemy
common /x, y/
I w drugiej podamy to samo. Wtedy obie metody będę widziały wartości x i y chociaż będą one zadeklarowane tylko w jednej z nich.
To samo chciałbym zrobić w C#

0

Aby nie zakładać drugiego tematu zadam jeszcze jedno pytanie.
Na początku programu przypisuje wartości zmiennym poprzez wczytanie ich z pliku. Dokładnie mówiąc mam w pliku tekstowym 52 linijki, w każdej linijce jest inna liczba. Program czyta linijka po linijce tekst i odczytaną wartość przypisuje zmiennej.
Tutaj jest mały problem który przy kilku tysiącach obiegach pętli powoduje u mnie powstanie sporych błędów.
Otóż - gdy program odczytuje z pliku wartość np 5,25000 do zmiennej trafia wartość 5,25002. Dane wczytuje do floatów.
Błędy nie występują gdy wczytywana wartość jest całkowita.

0
jabol333 napisał(a):

Przeczytałem i nie wiem czy zrozumiałem to w odpowiedni sposób- chodzi o to aby wszystkie moje zmienne które chce udostępnić wrzucić do jednej tablicy i dopiero ta tablicę przekazać następnym klasom i metodom?

Tak, to jest jakiś sposób. O ile te wartości reprezentują to samo, czyli np. długości odcinków albo wartości pomiarów temperatury. Jeśli niektóre z nich to współrzędne, a niektóre to pomiary temperatury, to opakuj je w klasę z właściwościami o sensownych nazwach.

Może wytłumaczę dlaczego to musze zrobić.
Mam kod napisany w Fortaranie. Występuje tam Statement o nazwie "common". Jeśli w jednej metodzie wpiszemy
common /x, y/
I w drugiej podamy to samo. Wtedy obie metody będę widziały wartości x i y chociaż będą one zadeklarowane tylko w jednej z nich.
To samo chciałbym zrobić w C#

Nie rób "to samo" tylko rób dobrze. Skoro te języki programowania się od siebie różnią, nie próbuj na siłę pisać identycznego kodu, bo wyjdzie z tego bagno.

Aby mieć dostęp do wartości z jednej klasy w drugiej klasie, to masz dwie możliwości - albo je przesłać w argumentach danej metody, albo udostępnić publicznie przez właściwości/metody - w tym przypadku każda klasa będzie miała do nich dostęp.

Opisz co chcesz zrobić, a nie jak chcesz zrobić, to będzie łatwiej Ci pomóc.

jabol333 napisał(a):

Otóż - gdy program odczytuje z pliku wartość np 5,25000 do zmiennej trafia wartość 5,25002. Dane wczytuje do floatów.
Błędy nie występują gdy wczytywana wartość jest całkowita.

Najpierw teoria: http://osilek.mimuw.edu.pl/index.php?title=WDP_Reprezentacja_liczb#U.C5.82amki
A potem praktyka: nie używaj float, użyj double, może pomoże. Jeśli nie, to przejdź na decimal tylko licz się z tym, że obliczenia będą znacznie wolniejsze.

0

Postaram się wytłumaczyć najdokładniej jak potrafię co mam zamiar zrobić.
Otóż mam jedną główną klasę nazwijmy ją "Obliczenia" . W klasie Obliczenia wykonywane są obliczenia (prądów).
Mam też inne klasy w których obliczane są współczynniki wykorzystywane w klasie Obliczenia (np współczynnik wypierania prądu).
Klasy pomocnicze muszą widzieć zmienne z klasy Obliczenia ( jak np gęstość prądu, poślizg wirnika).
Na chwile obecną wszystkie te zmienne przekazałem jako parametry metody, ale z racji ze liczba tych zmiennych jest dwucyfrowa uważam, że zrobiłem to wysoce nie elegancko.

I tutaj pojawia się moje pytanie:
Jak udostępnić metodom w klasach pomocniczych zmienne z klasy głównej w możliwie jak najbardziej elegancki sposób?

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1