나는 이상한 상황에 처해있다. 항목 객체의 배열 될 핵심 클래스의 속성의이상한 VB.NET 배열 속성 상황
Public Class Entry
End Class
Public Class Core
End Class
하나 :
나는이 두 개의 클래스가 있습니다. 어떻게 선언 할 수 있습니까?
외부에서이 배열을 변경 (추가/제거)하는 유일한 방법은 AddEntry (Ent Entry Entry) 및 RemoveEntry (ID As String)의 두 가지 기능을 사용해야합니다. 여기서 AddEntry 함수를 호출하는 사람은 Entry 객체를 생성하고 전달해야합니다. 기존 배열에 추가됩니다.
그러나, 엔트리 배열이 같은 인쇄 또는 무엇이든하고 통해 반복을 위해, 외부에서이 같은 액세스 할 수 있어야합니다 : 혼자 기능을 통해 수정을 속성으로 배열을 표시 할 수 있습니다 만, 제한
' core1 is a valid Core object
For Each Ent As Entry In core1.Entries
MsgBox(Ent.SomeProperty)
Next Ent
이 가능 ? Add 및 Remove 함수 내부의 로직은 setter 또는 getter 내부에있을 수 있지만 추가하려는 사람은 하나의 Entry 객체 만 전달해야한다는 것을 알고 있습니다.
당신은 배열에 대한 읽기 전용 액세스 권한을 가지고 있지만 수정하기 위해 객체를 생성하고 ID를 보내거나 ID를 제거하십시오. 전체 배열에 대해 신경 쓰지 마라.
나는 의미가 있기를 바랍니다.
+1 이봐, 아무 문제가 VB로 변환하는 방법을 알아낼거야 :) 코드 주셔서 감사. 나는 그것이 작동하게 할 수 있는지 알게 될 것이다. –
일반 배열을 ReadOnly로 반환 할 수 있습니까? 항목을 항목으로 희석하십시오. 항목을 ReadOnly로 반환 할 수 있습니까? 또는 List, ArrayList 또는 이러한 객체에서만 사용해야합니까? –
그러나 배열을 내부적으로 사용하려는 이유가 있습니까? 나는 그것을 복잡하게 만들 것이라고 생각합니다. 아마 생성자에서 배열을 전달하여 ReadOnlyCollection 인스턴스를 만들 수 있습니다. 이 아니라면 List의 생성자에 배열을 전달한 다음 목록에서 'AsReadOnly'를 호출하여 ReadOnlyCollection 인스턴스를 가져 와서 List를 만들 수 있습니다. –