C# Language Reference
interface (C# Reference)

An interface contains only the signatures of methods, delegates or events. The implementation of the methods is done in the class that implements the interface, as shown in the following example:

      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();
    }
}
Remarks

An interface can be a member of a namespace or a class and can contain signatures of the following members:

An interface can inherit from one or more base interfaces.

When a base type list contains a base class and interfaces, the base class must come first in the list.

A class that implements an interface can explicitly implement members of that interface. An explicitly implemented member cannot be accessed through a class instance, but only through an instance of the interface, for example:

For more details and code examples on explicit interface implementation, see Explicit Interface Implementation (C# Programming Guide).

Example

The following example demonstrates interface implementation. In this example, the interface IPoint contains the property declaration, which is responsible for setting and getting the values of the fields. The class Point contains the property implementation.

// keyword_interface_2.cs
// Interface implementation
using System;
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
C# Language Specification

For more information, see the following sections in the C# Language Specification:

  • 1.9 Interfaces

  • 3.4.5 Interface members

  • 4.2.4 Interface types

  • 10.1.2.2 Interface implementations

  • 11.2 Struct interfaces

  • 13 Interfaces

See Also

Reference

C# Keywords
Reference Types (C# Reference)
Using Properties (C# Programming Guide)
Using Indexers (C# Programming Guide)
class (C# Reference)
struct (C# Reference)

Concepts

C# Programming Guide

Other Resources

C# Reference

Tags :


Community Content

Hugonne
Question...
I've been trying to truly understand the use of interfaces, but to be honest I haven't figured it out yet. What's the difference, in the above example of using:

static void PrintPoint(IPoint p)
Instead of

static void PrintPoint(Point p)

Why would I want to use one and not the other? What's the point of having the interface if I have to create an instance of my Point class anyway?


Tags :

HassanDavis
The difference between Point and IPoint
The difference between the two declarations is that 'IPoint p' will accept any object that implements the IPoint interface, however 'Point p' will only accept objects of class type Point. In the example, the usage of Point and IPoint are interchangeable.
Tags :

Page view tracker