Indexers in Interfaces


Indexers in Interfaces

You can declare indexers in an interface. To do this, specify the get and/or set keyword, but replace the body of the get or set accessor with a semicolon. Any class or struct that implements the interface must implement the indexer accessors declared in the interface. For example:

interface IRawInt {     bool this [ int index ] { get; set; } } struct RawInt : IRawInt {     ...     public bool this [ int index ]     {         get { ... }         set { ... }     }     ... }

If you implement the interface indexer in a class, you can declare the indexer implementations as virtual. This allows further derived classes to override the get and set accessors. For example:

class RawInt : IRawInt {     ...     public virtual bool this [ int index ]     {         get { ... }         set { ... }     }     ... }

You can also choose to implement an indexer by using the explicit interface implementation syntax covered in Chapter 12, “Working with Inheritance.” An explicit implementation of an indexer is non-public and non-virtual (and so cannot be overridden). For example:

struct RawInt : IRawInt {     ...     bool IRawInt.this [ int index ]     {         get { ... }         set { ... }     }     ... }




Microsoft Visual C# 2005 Step by Step
Microsoft® Visual C#® 2005 Step by Step (Step By Step (Microsoft))
ISBN: B002CKYPPM
EAN: N/A
Year: 2005
Pages: 183
Authors: John Sharp

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net