Jak przekazać zmienną przez wartość i referencję?

0

Muszę napisać program z podprogramami i bez nich który przekazuje parametry przez wartość i referencję. Czyli mam do napisania cztery opcje:
a) podprogram do którego przekazujemy parametr przez wartość
b) podprogram do którego przekazujemy parametr przez referencje
c) bez podprogramu przekazanie parametru przez wartość
d) bez podprogramu przekazanie parametru przez referencje

Załóżmy że wszystkie 4 opcje będą w różnych buttonach. Program będzie wyświetlał treść w MessageBox.

 
//a
        private void button1_Click(object sender, EventArgs e)
        {
            funkcja(textBox1.Text);
        }

        void funkcja (string parametr)
        {
            MessageBox.Show(parametr);
        }
//b
        private void button2_Click(object sender, EventArgs e)
        {
            string paramet = textBox1.Text;
            przez_ref(ref paramet);
        }

        void przez_ref(ref string parametr)
        {
            MessageBox.Show(parametr);
        }

Nie wiem o co chodzi z tym c i d bo co to znaczy przekazać parametr bez podprogramu?

0

A co Twoim zdaniem oznacza "z podprogramem"? Bo moim zdaniem MessageBox to nie jest podprogram.

0

Pojęcie podprogram jest rodem z programowania proceduralnego.
C# - jest obiektowo zorientowanym językiem.
Więc te pytania brzmią jak pytania o śmigło w samolocie odrzutowym.

Jeżeli nawet rozszerzymy pojęcie podprogram również na metody to nie da się zrobić ani c. ani d. ponieważ skoro przekazujemy parametr to wywołujemy jakiś tam podprogram.

0
dam1an napisał(a):

A co Twoim zdaniem oznacza "z podprogramem"? Bo moim zdaniem MessageBox to nie jest podprogram.

A funkcja nie jest podprogramem?

W jakim języku powinienem to napisać?

0

np: Basic ale to nadal nie zmienia drugiej części mojej wypowiedzi.

0

Do dokładnego mierzenia czasu lepiej użyć Elapsed czy ElapsedTicks w Stopwatch? Chyba że znacie jakiś lepsze metody porównania szybkości działania.
W c++ mogę napisać wszystkie 4 podpunkty? Niestety w Basic nic nigdy nie pisałem.
Klasy w C# też zaliczamy do podprogramów? Znalazłem tylko że procedura i funkcja to podprogramy.

0

Chyba że znacie jakiś lepsze metody porównania szybkości działania.

Jeżeli zależy Ci na bardzo dokładnym mierzeniu czasu, możesz skorzystać z funkcji QueryPerformanceCounter i QueryPerformanceFrequency; Nie wiem czy istnieje inny sposób na dokładniejszy pomiar, niż te funkcje oferują;

Klasy w C# też zaliczamy do podprogramów? Znalazłem tylko że procedura i funkcja to podprogramy.

Pojęcie podprogramu wywodzi się z dawnych czasów (z programowania strukturalnego), w którym klas raczej nie było; Więcej na temat podprogramów możesz poczytać na wikipedii lub w innych źródłach.

0

Chyba zrobię po prostu klasę w C# i przekaże parametry przez wartość i referencję. Nie wiem gdzie indziej mogę przekazać zmienne.

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