목록 크기 (t) -VB.net의 크기 제한
문제
내 일반 목록의 크기를 제한하여 일정량의 값이 포함 된 후에는 더 이상 추가되지 않도록 노력하고 있습니다.
목록 객체의 용량 속성을 사용 하여이 작업을 수행하려고하지만 이것은 작동하지 않는 것 같습니다.
Dim slotDates As New List(Of Date)
slotDates.Capacity = 7
사람들이 목록의 크기를 제한하는 조언은 어떻게 어울릴까요?
각 객체가 추가 된 후 목록의 크기를 확인하지 않으려 고합니다.
해결책
물건을 추가하는 몇 가지 방법이 있습니다. List<T>
: 추가, 추가 레인지, 삽입물 등
상속되는 솔루션을 고려하십시오 Collection<T>
:
Public Class LimitedCollection(Of T)
Inherits System.Collections.ObjectModel.Collection(Of T)
Private _Capacity As Integer
Public Property Capacity() As Integer
Get
Return _Capacity
End Get
Set(ByVal value As Integer)
_Capacity = value
End Set
End Property
Protected Overrides Sub InsertItem(ByVal index As Integer, ByVal item As T)
If Me.Count = Capacity Then
Dim message As String =
String.Format("List cannot hold more than {0} items", Capacity)
Throw New InvalidOperationException(message)
End If
MyBase.InsertItem(index, item)
End Sub
End Class
이런 식으로 용량은 당신을 존중합니다 Add
또는 Insert
.
다른 팁
목록의 크기를 제한하는 내장 방법은 없습니다 (t). 용량 특성은 단지 언더 시스템 버퍼의 크기를 수정하여 제한하지 않습니다.
목록의 크기를 제한하려면 잘못된 크기를 확인하는 래퍼를 만들어야합니다. 예를 들어
Public Class RestrictedList(Of T)
Private _list as New List(Of T)
Private _limit as Integer
Public Property Limit As Integer
Get
return _limit
End Get
Set
_limit = Value
End Set
End Property
Public Sub Add(T value)
if _list.Count = _limit Then
Throw New InvalidOperationException("List at limit")
End If
_list.Add(value)
End Sub
End Class
당신은 새로운 것을 도출하고 싶을 것입니다 LimitedList
그리고 추가 방법을 섀도 웁니다. 이와 같은 것이 당신을 시작하게 할 것입니다.
public class LimitedList<T> : List<T>
{
private int limit;
public LimitedList(int limit)
{
this.limit = limit;
}
public new void Add(T item)
{
if (Count < limit)
base.Add(item);
}
}
당신이 VB에 있다는 것을 깨달았습니다. 곧 번역하겠습니다
편집하다 VB 버전은 Jared 's를 참조하십시오. 누군가 C# 버전을 시작하기를 원할 경우 여기에 남겨 두겠습니다.
내 가치가있는 것에 대해 내 목록 클래스를 캡슐화하는 대신리스트 클래스를 확장하기 때문에 약간 다른 접근 방식을 취합니다. 사용하려는 접근 방식은 상황에 따라 다릅니다.
최대 품목의 품목을 제한 해야하는 경우 자신의 목록/수집을 구현해야합니다.