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:
Allora, cosa c'è che mi ha lasciato perplesso? Il modo in cui utilizza il metodo public int[] Variabile()...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(); } } }
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!

Rispondi quotando
