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结果是,这回答了您的问题;