2015-07-29 2 views
0

У меня есть класс, я хотел бы содержать список/вектор/любой указатель на другие объекты того же класса. Объект класса будет представлять координату, и список будет содержать ссылки на другие координаты, которые связаны с этим ... если это имеет смысл.Объекты со ссылками на другие объекты того же класса C#

Я привык к C++, где я хотел бы иметь что-то вроде:

class MyClass 
{ 
    private: 
     std::vector<const MyClass*> vec; 
}; 

Я пытаюсь сделать что-то вроде выше в C#, но я не могу сказать, как это сделать. Должен ли я использовать ключевое слово unsafe, так что я могу использовать указатели или есть еще один более умный способ реализовать что-то подобное на C#?

+0

Я думаю, что вам нужен простой 'частный список VEC; '. Всякий раз, когда вы добавляете что-то в этот список, это все равно ссылка, поэтому, если вы измените ее внутри 'MyClass' или снаружи, она изменится во всех местах. – LInsoDeTeh

+1

@MarioVernari Не совсем. Это либо _reference_, либо _value_ типы. Как правило, нельзя использовать термин _pointer_, если вы не ссылаетесь на «небезопасные» контексты. https://msdn.microsoft.com/en-us/library/y31yhkeb.aspx – MickyD

ответ

1

Вы должны просто настроить класс с List/перечислимых или любой из вас типа, так что-то вроде:

public class Cake 
{ 
    // public 
    public IEnumerable<Cake> Cakes { get; set; } 

    // private 
    private IEnumerable<Cake> cakes; 
} 
4

Для Список

class MyClass 
{ 
    public List<MyClass> Vec { get { return vec; } set { vec = value } 
    private List<MyClass> vec; 
} 
+2

Вы также можете сделать это немного чище, перекинув частное поле поддержки и используя свойство auto: public List Vec {get; задавать; } – Nate222