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!