interface (Riferimenti per C#)

Aggiornamento: novembre 2007

Un'interfaccia contiene solo le firme di metodi, proprietà, eventio indicizzatori. L'implementazione dei membri viene effettuata nella classe o nella struttura che implementa l'interfaccia, come illustrato nel seguente esempio:

Esempio

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation: 
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

Un'interfaccia può essere membro di uno spazio dei nomi o di una classe e contenere firme dei seguenti membri:

Un'interfaccia può ereditare da una o più interfacce di base.

Quando un elenco di tipi di base contiene interfacce e una classe base, la classe base deve precedere le interfacce.

Una classe che implementa un'interfaccia può implementare in modo esplicito i membri di tale interfaccia. Non è possibile accedere a un membro implementato in modo esplicito tramite un'istanza di classe, ma solo tramite un'istanza dell'interfaccia.

Per ulteriori dettagli ed esempi di codice sull'implementazione esplicita delle interfacce, vedere Implementazione esplicita di un membro di interfaccia (Guida per programmatori C#).

Nell'esempio seguente viene illustrata l'implementazione di un'interfaccia. In questo esempio, l'interfaccia contiene la dichiarazione di proprietà e la classe contiene l'implementazione.

interface IPoint
{
   // Property signatures:
   int x
   {
      get;
      set;
   }

   int y
   {
      get;
      set;
   }
}

class Point : IPoint
{
   // Fields:
   private int _x;
   private int _y;

   // Constructor:
   public Point(int x, int y)
   {
      _x = x;
      _y = y;
   }

   // Property implementation:
   public int x
   {
      get
      {
         return _x;
      }

      set
      {
         _x = value;
      }
   }

   public int y
   {
      get
      {
         return _y;
      }
      set
      {
         _y = value;
      }
   }
}

class MainClass
{
   static void PrintPoint(IPoint p)
   {
      Console.WriteLine("x={0}, y={1}", p.x, p.y);
   }

   static void Main()
   {
      Point p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 1.9 Interfacce

  • 3.4.5 Membri delle interfacce

  • 4.2.4 Tipi interfaccia

  • 10.1.2.2 Implementazioni dell'interfaccia

  • 11.2 Interfacce della struttura

  • 13 Interfacce

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Parole chiave di C#

Tipi di riferimento (Riferimenti per C#)

Utilizzo delle proprietà (Guida per programmatori C#)

Utilizzo degli indicizzatori (Guida per programmatori C#)

class (Riferimenti per C#)

struct (Riferimenti per C#)

Altre risorse

Riferimenti per C#