2016-12-14 7 views
3

Может кто-нибудь объяснить, в чем преимущество индексатора?В чем преимущества индексатора?

public class MyClass 
{ 
    private List<string> list = new List<string>() 

    public string this[int value] 
    { 
     get 
     { 
      return list[value]; 
     } 
    } 

    public string GetValue(int value) 
    { 
      return list[value]; 
    } 
} 

Какова выгода от использования:

MyClass target = new MyClass(); 
string value = target[0]; 

по этому поводу:

MyClass target = new MyClass(); 
string value = target.GetValue(0); 
+4

Вам не нужно писать 'GetValue', и вы знаете, что класс представляет собой коллекцию с индексом, но вы можете потерять удобочитаемость, поскольку индекс не имеет имени, поэтому не злоупотребляйте им. –

+2

Это синтаксис сахара *, преимущество - * читаемость * –

+0

@DmitryBychenko: читаемость не является преимуществом, наоборот может быть правдой, потому что индекс не имеет имени –

ответ

7

Это чисто синтаксическое удобство и читаемость/выразительность. Он по-прежнему реализуется как метод. Итак: если вы думаете, что target[0] является более очевидным, удобным и читаемым для вашего сценария: используйте индекс.

Смежные вопросы