using System; /// @author Vesa Lappalainen /// @version 26.10.2012 /// /// Tutkitaan muuttujinen näkyvyyttä /// public class MuuttujienNakyvyys { /// /// Missä pääohjelman muuttujat näkyvät /// /// ei käytössä public static void Main(string[] args) { int luku = 9; // Näkyy vain pääohjelmassa double d = 5.5; // Näkyy vain pääohjelmassa int[] luvut = { 1, 2, 3 }; // Näkyy vain pääohjelmassa, mutta viitteen kautta aliohjelmakin voi muuttaa Muuta(luvut, 2, luku); { // apulohko, jossa omia muuttujia int uusi = 3; // muuttuja joka näkyy vain tässä lohkossa Console.WriteLine(uusi); } // nyt uusi-muuttuja lakkaa olemasta // Täytetään taulukkoa int edellinen = 0; for (int i = 0; i < luvut.Length; i++) { int nyt = luvut[i]; // on olemassa silmukan sisällä int iso = 3 * nyt; // on olemassa silmukan sisällä luvut[i] += iso; edellinen = nyt + luku; // silmukan ulkopuolella määritelty muuttuja } Console.WriteLine(String.Join(" ",luvut)); Console.ReadKey(); } /// /// Laitetaan taulukon luvut paikkaan uusi luku ja edelliseen paikkaa 3 suurempi luku. /// Kutsuttavan paikan PITÄÄ olla [1,taulukokoko-1] /// /// taulukko jota muutetaan, aliohjelman oma viite, mutta viitteen kautta voi muuttaa myös kutsuvan ohjelman taulukkoa /// paikka jota muutetaan, näkyy vain aliohjelmassa, muuttaminen ei vaikuta kutsuvaan ohjelmaan /// uusi arvo, näkyy vain aliohjelmassa, sama nimi ei haittaa, muuttaminen ei vaikuta kutsuvaan ohjelmaan public static void Muuta(int[] luvut, int paikka, int luku) { luvut[paikka] = luku; // viitteen ansiosta pääohjelman taulukko muuttui paikka--; // ei vaikuta pääohjelmaan int uusiarvo; // aliohjelman lokaali muuttuja uusiarvo = luku +3; luvut[paikka] = uusiarvo; // muuttaa pääohjelman taulukkoa luku = 12; // ei vaikuta pääohjelmaan koska oma lokaali muuttuja jota ei ole enää kun poistutaan } }