Advertisement
fcamuso

C# Indicizzatori

Nov 1st, 2020
683
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace indexers
  5. {
  6.   class Cliente
  7.   {
  8.     public string Cognome { get; set; }
  9.     public string Nome { get; set; }
  10.  
  11.     public Cliente(string cognome, string nome)
  12.     {
  13.       Cognome = cognome; Nome = nome;
  14.     }
  15.   }
  16.  
  17.   struct AccessoAgente
  18.   {
  19.     public int Indice { get; set; }
  20.     public string PassCode { get; set; }
  21.  
  22.     public AccessoAgente(int i, string psw) { Indice = i; PassCode = psw; }
  23.  
  24.  
  25.   }
  26.  
  27.   class AgenteDiZona
  28.   {
  29.     string passCode = "xyz";
  30.  
  31.     //dati anagrafici che salto per brevità...
  32.     List<Cliente> clienti = new List<Cliente>();
  33.  
  34.     public Cliente this[AccessoAgente accesso]
  35.     {
  36.       get
  37.       {
  38.         if (accesso.PassCode == passCode)
  39.           return clienti[accesso.Indice];
  40.         else
  41.           return new Cliente("Accesso Negato", "");
  42.       }
  43.     }
  44.    
  45.     public Cliente this[int indice]
  46.     {
  47.       get
  48.       { if (indice < clienti.Count)
  49.           return clienti[indice];
  50.         else
  51.           return new Cliente("Errore! Indice fuori dai limiti", "");
  52.       }
  53.  
  54.       set
  55.       {
  56.         if (indice < clienti.Count)  //modifica esistente
  57.           clienti[indice] = value;
  58.         else //aggiunta di uno nuovo
  59.           clienti.Add(value);
  60.       }
  61.     }
  62.  
  63.     public void stampaClienti()
  64.     { foreach (Cliente c in clienti) { Console.WriteLine(c.Cognome); } }
  65.   }
  66.  
  67.   class Program
  68.   {
  69.     static void Main(string[] args)
  70.     {
  71.       AgenteDiZona agente = new AgenteDiZona();
  72.      
  73.       //inserimento di nuovi clienti
  74.       agente[0] = new Cliente("Rossi", "Mario");
  75.       agente[1] = new Cliente("Verdi", "Giovanni");
  76.       agente[2] = new Cliente("Gialli", "Sandro");
  77.  
  78.       agente.stampaClienti();
  79.  
  80.       //modifica del secondo
  81.       agente[1] = new Cliente("Neri", "Giorgio");
  82.  
  83.       Console.WriteLine("dopo la modifica:");
  84.       agente.stampaClienti();
  85.  
  86.       Console.WriteLine(agente[10].Cognome);
  87.       Console.WriteLine(agente[new AccessoAgente(2, "uwd")].Cognome);
  88.       Console.WriteLine(agente[new AccessoAgente(2, "xyz")].Cognome);
  89.  
  90.  
  91.     }
  92.   }
  93. }
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement