2013-12-05 3 views

ответ

1

Одна вещь, чтобы рассмотреть то, что способность вы хотите предоставить обновление перечень , Если вы просто выставить список как получить свойство только, то ничего не мешает кому-то из изменения списка:

public class foo{ 
    private List<type> list = new List<type>; 
    public List<type> List{ 
     get{return list} 
    } 
} 
//Much later.... 
foo Foo = new foo(); 
Foo.List.Clear(); // perfectly legal 

Если, однако, вы хотите список «только для чтения» разоблачен, то вы можете разоблачить список, как только для чтения:

public class foo{ 
    private List<type> list = new List<type>; 
    public IList<type> List{ 
     get{return list.AsReadOnly()} 
    } 
} 
//Much later.... 
foo Foo = new foo(); 
Foo.List.Clear(); // not possible 

EDIT

Основываясь на ваш комментарий на другой вопрос, остается неясным, следует ли подвергать л ist как собственность или доступ штук по индексу. Для последнего вы можете добавить указатель в класс:

public class foo{ 
    private List<type> list = new List<type>; 
    public type this[int i]{ 
     get{return list[i]} 
     get{list[i] = value} 
    } 
} 
//Much later.... 
foo Foo = new foo(); 
Console.WriteLine(Foo[1]); 
+0

Я хочу использовать индекс, но не применять его ко всему классу (в моем реальном коде есть несколько списков, поэтому каждому нужно свойство, которое позволяет Foo.List [i], Foo.OtherList [i] и т. д.) – Joe

+0

Затем просто выведите список как свойство (с возможностью сделать его доступным только для чтения, как я упоминаю) –

1

Поскольку у вас уже есть список, вы можете просто вернуть этот список в свойстве

public class foo{ 
    private List<type> list = new List<type>; 
    public List<type> List{ 
     get{ return list; } 
    } 
} 
+0

Это тот, который вы хотите. – RacerNerd

+0

Я не хочу возвращать весь список, только элемент. – Joe

+0

@Joe - ваш пример предоставляет _list_ как свойство, затем получает один _element_ из этого списка - вместо этого вы хотите добавить индексированный в 'foo'? –

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