interface (Riferimenti per C#)

Un'interfaccia contiene solo le firme di metodi, proprietà, eventi o indicizzatori. Una classe o struttura che implementa l'interfaccia deve implementarne i membri specificati nella definizione dell'interfaccia. Nell'esempio seguente, la classe ImplementationClass deve implementare un metodo denominato SampleMethod che non dispone di parametri e restituisce void.

Per ulteriori informazioni, vedere Interfacce (Guida per programmatori C#).

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 dell'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. Qualsiasi istanza di una classe che implementa IPoint presenta proprietà x e y di tipo Integer.

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 la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Tipi di riferimento (Riferimenti per C#)

Interfacce (Guida per programmatori C#)

Utilizzo delle proprietà (Guida per programmatori C#)

Utilizzo degli indicizzatori (Guida per programmatori C#)

class (Riferimenti per C#)

struct (Riferimenti per C#)

Interfacce (Guida per programmatori C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#