Wskaźnik do zmiennej

0

Chciał bym osiągnąć takie coś:

class A
        {
            private object Wskaznik;
            private string StartValue;
            public A(object w)
            {
                this.Wskaznik = w;
                this.StartValue = w.ToString();
            }

            public bool Check()
            {
                if (this.Wskaznik.ToString().Equals(this.StartValue))
                    return false;
                else
                    return true;
            }
        }

        static void Main(string[] args)
        {
            string JakisString = "hehe";
            A klasa = new A(JakisString);
            JakisString = "aaaa";
            Console.WriteLine("Value Changed: "+klasa.Check());
        }

aby do nowo utworzonej klasy zapisać wskaźnik do zmiennej(lub os w tym stylu), i chciał bym w niej sprawdzać czy zmienna ta została zmieniona(podawanie tej zmiennej do klasy Check nie wchodzi w grę ;p), mam nadzieje że mnie rozumiecie ;]

0

nikt nie potrafi mi pomóc? :(
problem tkwi w tym ze zwykle pointery nie mogą przechowywać typu object, a nie mam pojęcia co innego mogę zrobić

0

nie rozumiemy. co chcesz osiągnąć?

0

tworze klasę która będzie lądowała z pliku konfiguracje, a przy zamknięciu będzie ja zapisywać jeśli się coś zmieni.
klasa ta czyta plik linijkę po linijce i dodaje do tablicy inna klasę z ta linijka w której chce umieścić wskaźnik (lub coś takiego) do zmiennej w której będzie przechowywane value tej określonej rzeczy z konfigu i początkową jej zawartość, przed wyłączeniem programu klasa będzie sprawdzać czy któraś zmienna się zmieniła, i jeśli tak to zapisze nowy config z nimi, tylko tak jak mówiłem ta zmienna morze być: int, double, string, tablice itp itd, i dlatego nie mam jak wykorzystać pointerów :/

0

Jakich pointerów? C++ krzywdzi.

Tą konfigurację wczytujesz do jakiegoś obiektu czy trzymasz w pamięci jako tablicę stringów? Bo najprościej chyba trzymać jeden obiekt oryginalnej konfiguracji, na drugim operować, a potem go ewentualnie zapisać.
Można też zawsze zapisywać bez żadnej zabawy. Jakie ma to znaczenie dla zapisania, czy nowa konfiguracja różni się od starej? IMHO, żadnego.

0

można też trzymać flagę (typu bool) oznaczającą, czy coś się w konfigu zmieniło. bo chyba wiadomo, kiedy ulega zmianie?

0

wiecie co, porzuciłem pomysł zapisu config bo będzie on zbyt skomplikowany i sam zapis był by problemem, a użytkownik może edytować konfiguracje ręcznie przez notatnik ;]

ale mam inne pytanie co do tego:

using()
{

}

poczytałem trochę, i wiem ze zwalnia ono pamięć po wyjściu wywołując Dispose(), ale jeśli mamy przykładowo:

public void JakasFunkcja()
{
            using (StreamReader read = new StreamReader(file))
            {
                string[] textLines = read.ReadToEnd().Split('\n');

                reader.Close();
            }
}

i funkcja lub konstruktor się kończy Od razu po zakończeniu czytania pliku to czy w ogóle trzeba użyć using? da coś to?

No i czy żeby użyć using na własnej klasie muszę dopisać IDisposable i nadpisać Disposed(), ale czy muszę coś dopisać w disposed? czy po prostu zostawić bazowe?

I na koniec, w jakich przypadkach powinienem używać using, czy tylko kiedy czytam z plików czy może jeszcze w innych przypadkach?

Nie chce żeby mój program był pamięcio żerny dlatego pytam.

0
gosc napisał(a)

wiecie co, porzuciłem pomysł zapisu config bo będzie on zbyt skomplikowany i sam zapis był by problemem, a użytkownik może edytować konfiguracje ręcznie przez notatnik ;]

Wiesz, jeśli zapis konfiguracji do pliku jest dla Ciebie czymś skomplikowanym, to jeszcze długa droga przed Tobą.

i funkcja lub konstruktor się kończy Od razu po zakończeniu czytania pliku to czy w ogóle trzeba użyć using? da coś to?

Tak, da, zwolni zasoby zarezerwowane przez obiekt. Jeśli zasoby nie zostaną zwolnione, to w pewnym momencie może Ci się np. skończyć pamięć albo zablokujesz plik i nie będziesz mógł go otworzyć/edytować nie tylko z innego programu, ale nawet z Twojej aplikacji.

No i czy żeby użyć using na własnej klasie muszę dopisać IDisposable i nadpisać Disposed(), ale czy muszę coś dopisać w disposed? czy po prostu zostawić bazowe?

A jak myślisz? Bo skąd kompilator miałby wiedzieć, co Twoja funkcja ma wykonać?

I na koniec, w jakich przypadkach powinienem używać using, czy tylko kiedy czytam z plików czy może jeszcze w innych przypadkach?

using to tylko cukier składniowy na takie coś:

 
MyClass myObject = new MyClass();
try
{
    myObject.DoSomething();
}
finally
{
    myObject.Dispose();
}

Korzystanie z Dispose jest zasadne przy korzystaniu z połączeń i zapytań do bazy danych, operacji na strumieniach, operacji na grafice. Ogólnie czegoś, co zużywa jakieś zasoby (pamięć, plik, połączenie TCP).

0

ehh, samo zapisanie to nie problem, tylko zapisanie w sposób który ja chciałem osiągnąć, nie chcę mi się tłumaczyć jak chciałem bo bym tylko namieszał i i tak byście nie zrozumieli ;p

tak by the way, widziałem już trochę twoich postów i ogólnie tak wrogo chyba nastawiony jesteś ;]
nie wszyscy są super programistami, wiedza przychodzi z czasem, wiec wrzuć na luz ;p

no i dzięki za te informacje o using :)

0

Wiesz, ludzie to moi wrogowie, bo ciągle chcą mnie przerobić na schabowe, więc jestem do nich wrogo nastawiony. ;P
Daj spokój, sarkazm czy stwierdzenie czegoś na podstawie wypowiedzi, to jeszcze nie wrogość.

0

ehh, samo zapisanie to nie problem, tylko zapisanie w sposób który ja chciałem osiągnąć, nie chcę mi się tłumaczyć jak chciałem bo bym tylko namieszał i i tak byście nie zrozumieli ;p

C# ma gotowe funkcje do zapisu obiektów w postaci binarnej i XML-a, a i pliki ini teżby się pewnie znalazły. Nie trzeba nic specjalnie kombinować. Poczytaj o serializacji.

0

heh, nie chce używać XML, ja napisałem własny loader który ładuje format typu:
key = value
key = value
key = value
key = value

sam zapis, nie jest problemem, tylko to jak chciałem to zrobić ;p

pozdrowienia dla wszystkich c sharperów xD

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