Autor Wątek: Referencje  (Przeczytany 2672 razy)

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Lipiec 07, 2006, 21:31:02
public class Program
  {
    int zm;

    public void Przypisz (ref int mz)
    {
      zm = mz;
      zm = 10;
    }

    static void Main ()
    {
      Program program = new Program ();

      int wartość=20;

      program.Przypisz (ref wartość);

      Console.Write (wartość);
    }
  }

Jak przypisać do zm referencje zmiennej mz żeby po przypisaniu wartości do zm zmieniła się wartość mz??

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline counterClockWise

  • Użytkownik

# Lipiec 07, 2006, 21:38:05
Moim zdaniem nie przypiszesz referencji do zwykłego inta, on będzie przechowywał tylko wartość nomen-nomen.
Rozwiazaniem jest przechowywanie typu referencyjnego w twojej klasie np. własnej klasy obudowującej inta.

P.S. Piłem, więc może czegoś nie widzę :D

Offline zarius

  • Użytkownik

# Lipiec 07, 2006, 22:26:26
Naprawde napsiales to tak ze nie moge zrozumiec o co dokladnie ci chodzi wiec moge sie kompletnie mylic w twoich zamiarach :/ ale jesli chcesz podajac int'a do funkcji przypisz zmienic jego wartosc poprzez operowanie na nim w ciele funkcji to jest do tego slowo kluczowe "out" czyli taka zmienna do ktorej bedzie zapisywany jakis wynik dzialnia funkcji...

ale jak mowie, moge sie mylic...

Btw: czy to wina FireFoxa czy forum ze czcionka w "Kod" jest tak mala ze wrecz nieczytelna :/

Offline counterClockWise

  • Użytkownik

# Lipiec 07, 2006, 22:28:52
Naprawde napsiales to tak ze nie moge zrozumiec o co dokladnie ci chodzi wiec moge sie kompletnie mylic w twoich zamiarach :/ ale jesli chcesz podajac int'a do funkcji przypisz zmienic jego wartosc poprzez operowanie na nim w ciele funkcji to jest do tego slowo kluczowe "out" czyli taka zmienna do ktorej bedzie zapisywany jakis wynik dzialnia funkcji...

ale jak mowie, moge sie mylic...

Btw: czy to wina FireFoxa czy forum ze czcionka w "Kod" jest tak mala ze wrecz nieczytelna :/

No dokładnie! Ja tez z tym miałem problemy początkowo.

Oczywiście jest słowo kluczowe "out", ale autor chce "przypisać referencje do zm". A tego to rozwiązanie nie zapewni. Jeżeli zmieni tę lokalną "zm" gdzieś później w innym miejscu, to "mz" się nie zmieni.
« Ostatnia zmiana: Lipiec 07, 2006, 22:30:56 wysłana przez counterClockWise »

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Lipiec 08, 2006, 09:09:03
Nie wiem jak to jest w C#, ale jeśli w C++ chcesz przypisać zmiennej A referencję do zmiennej B, to A musi być typu referencyjnego (a u ciebie jest "zwykły" int).

A co do czytelności kodu w Firefoksie: można powiększyć, wciskając Ctrl+Plus ;).

Offline zarius

  • Użytkownik

# Lipiec 09, 2006, 20:36:26
Nie wiem jak to jest w C#, ale jeśli w C++ chcesz przypisać zmiennej A referencję do zmiennej B, to A musi być typu referencyjnego (a u ciebie jest "zwykły" int).

A co do czytelności kodu w Firefoksie: można powiększyć, wciskając Ctrl+Plus ;).

Ja wiem, ale wtedy reszta staje sie nienaturlanie duza :) Na starym forum wszystko bylo ladnie pieknie ;p :> znaczy sie nawet na starym skinie o ile dobrze wiem ;p

Ten styl cos nie teges :/

Offline Kamil Trzciński

  • Użytkownik

# Lipiec 09, 2006, 21:48:34
w C# nie da sie zadeklarowac pola w klasie bedacego odniesieniem do innego pola (o ile mi wiadomo)

Offline counterClockWise

  • Użytkownik

# Lipiec 09, 2006, 21:52:18
w C# nie da sie zadeklarowac pola w klasie bedacego odniesieniem do innego pola (o ile mi wiadomo)

Niemniej jak najbardziej da sie przechowywać referencje. Można w stu swoich klasach przechowywać referencje do tego samego obiektu. I zmiana w jednym miejscu pociągnie zmiane w kazdym innym.
Tylko po prostu zwykły int nie jest typem referencyjnym. :)
« Ostatnia zmiana: Lipiec 09, 2006, 21:54:08 wysłana przez counterClockWise »

Offline Kamil Trzciński

  • Użytkownik

# Lipiec 10, 2006, 00:24:19
jakims tam sposobem jest utworzenie tablicy jednowymiarowej z jednym elementem (dosyc eleganckim) lub z boxowanie wartosci... i uzycie pola z zboxowana wartosc w object... (mniej elegancki)

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Lipiec 10, 2006, 08:28:10
Ja wiem, ale wtedy reszta staje sie nienaturlanie duza :) Na starym forum wszystko bylo ladnie pieknie ;p :> znaczy sie nawet na starym skinie o ile dobrze wiem ;

Ale skoro masz dostępne powiększenie przez prosty skrót klawiaturowy, to możesz powiększyć, przeczytać kod, znowu pomniejszyć... Mnie to odpowiada, bo niektórzy ludzie mają tendencję do wklejania dziesiątek linii kodu, co przy większej czcionce byłoby zabójcze :).