2016-06-27 3 views
1

У меня есть класс A, который содержит поле List.Доступ к переменной класса из другого класса

public class A 
{ 
    public List<int> list = new List<int>(); 
} 

Я хотел бы, чтобы удалить элемент из list из класса B без составления списка в классе Astatic. Как я могу это сделать?

+0

Зачем вам нужно, чтобы сделать его статическим? вы устанавливаете его в 'public', поэтому любой, у кого есть экземпляр класса' A', уже может перейти в 'list' и изменить его. –

+0

Создайте объект класса A в классе B для доступа к списку –

ответ

6

Вы можете create an instance of classA внутри метода в классе B. Тогда вы могли бы получить доступ к list поле, как это:

public class B 
{ 
    void method() 
    { 
     A a = new A(); 
     int item = 2; 
     a.list.Remove(item); 
    } 
} 
1

Если вы не возражаете инстанцировании его, это просто

A a = new A(); 
a.list... 

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

public class B{ 

    private A myA; 
    public B(A a) { 
     this.myA = a; 
    } 
    public doSomething(){ 
     this.myA.... 
    } 
} 

Теперь вы можете использовать в качестве поля B.

+0

Как я могу передать его B? – Shury

1

Более OOP решение этой проблемы было бы:

public class A 
{ 
    private List<int> list = new List<int>(); 
    List<int> getList(); 
    void setList(List<int> list); 
} 

Затем в коде, где она используется,

A a = new A(); 
List<int> list = a.getList(); 
modify list as you want 
a.setList(list); 
Смежные вопросы