C# 如何访问显式实现接口的索引器

C# 如何访问显式实现接口的索引器,c#,C#,当我们显式地实现索引器的接口时,我们如何能够在创建对象后从索引器中设置和获取值。或者在同一个类构造函数中 namespace oopsTesting.Indexer { public interface IndexerInterface { char this[int index] { get; set;} } class Indexer : IndexerInterface { string name = "Babu K

当我们显式地实现索引器的接口时,我们如何能够在创建对象后从索引器中设置和获取值。或者在同一个类构造函数中

namespace oopsTesting.Indexer
{
    public interface IndexerInterface
    {
        char this[int index] { get; set;}
    }

    class Indexer : IndexerInterface
    {
        string name = "Babu Kumarasamy";
        StringBuilder sbName = new StringBuilder("Babu Kumarasamy");

        public Indexer()
        {
            for (int i = 0; i < sbName.Length; i++)
            {
                //How to access the indexer here
                Console.WriteLine("Property Indexer: {0}, StringBuilder: {1}", this[i], sbName[i]);
            }
        }
        char IndexerInterface.this[int index]
        {
            get { return name[index]; }

            set
            {
                //Property or indexer 'string.this[int]' cannot be assigned to -- it is read only
                //Strings are immutable which is why there's no setter, you can however use a string builder:
                //name[index] = value; 

                sbName[index] = value;
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            GenericIndexerTest objGenIndexer = new GenericIndexerTest();
            //How to access the indexer here
        }
    }
}
名称空间oopsTesting.Indexer
{
公共接口索引器接口
{
char此[int索引]{get;set;}
}
类索引器:索引器接口
{
string name=“Babu Kumarasamy”;
StringBuilder sbName=新StringBuilder(“Babu Kumarasamy”);
公共索引器()
{
for(int i=0;i
您可以创建
索引器的新实例
,将其分配给
索引器接口类型的变量

IndexerInterface ii = new Indexer();
char c = ii[0];

您可以创建
索引器
的新实例,将其分配给
索引器接口
类型的变量:

IndexerInterface ii = new Indexer();
char c = ii[0];
(注意:此答案假设
GenericIndexerTest
在代码中继承
Indexer

通过强制转换到接口类型,与访问任何显式实现的接口的方式相同:

GenericIndexerTest objGenIndexer = new GenericIndexerTest();
((IndexerInterface)objGenIndexer)[0] = 'A';
或接口的代码,而不是实现:

IndexerInterface objGenIndexer = new GenericIndexerTest();
objGenIndexer[0] ='A';
(注意:此答案假设
GenericIndexerTest
在代码中继承
Indexer

通过强制转换到接口类型,与访问任何显式实现的接口的方式相同:

GenericIndexerTest objGenIndexer = new GenericIndexerTest();
((IndexerInterface)objGenIndexer)[0] = 'A';
或接口的代码,而不是实现:

IndexerInterface objGenIndexer = new GenericIndexerTest();
objGenIndexer[0] ='A';

“显式接口实现”的第一个Google结果是,这回答了您的问题;“显式接口实现”的第一个Google结果是,这回答了您的问题;