Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Codice assai strano

    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!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Non cambia il valore della proprietà Variabile: semplicemente, ne ottiene il valore - che coincide con il riferimento ad un array - per incrementare uno dei valori appartenenti a quell'array.

    Apparentemente, se ho interpretato correttamente il codice, niente di strano.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.