Salve ragazzi, ieri mentre studiavo C# ho trovato su il libro che studiavo (Inside C#) un codice di esempio per spiegare il funzionamento dell'incremento con il sistema += che mi ha lasciato abbastanza perplesso... vi riporto il codice:

codice:
using System;
using System.Collections.Generic;
using System.Text;

namespace Prova
{
    public class ClasseStrana
    {
        protected int[] variabile;

        public ClasseStrana()
        {
            variabile = new int[1];
            variabile[0] = 42;
        }

        public int[] Variabile()
        {
            return variabile;
        }
    }

    class EseguiClasseStrana
    {
        public static void Main()
        {
            ClasseStrana cs = new ClasseStrana();
            Console.WriteLine("{0}", cs.Variabile()[0]);
            cs.Variabile()[0] += 5;
            Console.WriteLine("{0}", cs.Variabile()[0]);
            Console.ReadLine();
        }
    }
}
Allora, cosa c'è che mi ha lasciato perplesso? Il modo in cui utilizza il metodo public int[] Variabile()...
Come vedete il metodo non prende niente in ingresso e restituisce un vettore, mentre invece, come viene usato, cambia addirittura il valore della variabile "variabile"!

Una cosa del genere non mi era mai capitata, ho sottoposto questo codice a diverse persone e tutte sono rimaste perplesse, voi che ne pensate? E' un pò stranino? In questo modo non si rischia di compromettere la sicurezza del programma?

Ciao!