Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Use integral or string argument for indexers
Collapse the table of content
Expand the table of content

Use integral or string argument for indexers







Breaking Change


A public or protected type contains a public or protected indexer that uses an index type other than System.Int32, System.Int64, System.Object, or System.String.

Indexers, that is, indexed properties, should use integer or string types for the index. These types are typically used for indexing data structures and increase the usability of the library. Use of the Object type should be restricted to those cases where the specific integer or string type cannot be specified at design time. If the design requires other types for the index, reconsider whether the type represents a logical data store. If it does not represent a logical data store, use a method.

To fix a violation of this rule, change the index to an integer or string type, or use a method instead of the indexer.

Exclude a warning from this rule only after carefully considering the need for the nonstandard indexer.

The following example shows an indexer that uses an Int32 index.

using namespace System;

namespace DesignLibrary
    public ref class Months
        array<String^>^ month;

        property String^ default[int]
           String^ get(int index)
              return month[index];
           void set(int index, String^ value)
              month[index] = value;

            month = gcnew array<String^>(12);
            month[0] = "Jan";
            month[1] = "Feb";

Community Additions

© 2015 Microsoft