Поведение индексаторов
Всем привет! Допустим у нас есть 3 метода-индексатора приведённые ниже. Почему во время выполнения он запускает метод с параметром this[int i], а не this[byte i] или this[long i]?
MyType mType = new MyType();
Console.WriteLine($"{mType[0]}");
public sealed class MyType {
public string this[byte i]{
get {
return "Indexer byte";
}
set{
value = "Indexer byte";
}
}
public string this[int i]{
get{
return "Indexer int";
}
set{
value = "Indexer int";
}
}
public string this[long i]{
get{
return "Indexer long";
}
set{
value = "Indexer long";
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Чтобы получить нужный тип, используйте нужный литерал
MyType instance = new();
Console.WriteLine(instance[(byte)0]);
Console.WriteLine(instance[0]);
Console.WriteLine(instance[0L]);
Получается так
Indexer byte
Indexer int
Indexer long