728x90
반응형
요즘 VB (a.k.a Visual Basic)로 개발 중인데,
사용하는 데 있어서 조금 헷갈리는 부분들을 정리하려고 한다.
Dictionary를 사용해서 Array의 기능 + List의 기능을 활용하려고 했는데,
VB가 익숙치 않다보니 LINQ 람다식 사용에서 많이 당황했다.
VB에서는 람다식을 사용하기 위해서는 Function(x)를 꼭 써줘야 한다는 점!
나머지 코드 내용은 아래 주석과 실행결과를 참고,, : )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
Public Class Form1
Public dict As Dictionary(Of Integer, Integer)
Public MaxCount As Integer = 7
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dict = New Dictionary(Of Integer, Integer)
AddDict(10)
AddDict(11)
AddDict(12)
AddDict(13)
AddDict(14)
AddDict(15)
removeDict(13)
AddDict(16)
removeDict(14)
AddDict(17)
End Sub
Public Sub AddDict(ByVal val As Integer)
If dict.ContainsValue(val) Then
'기존에 해당하는 Value 값이 있으면 종료
Exit Sub
End If
For index = 0 To MaxCount 'MaxCount는 임의의 값으로 Dictionary 최대값을 0-7로 정함
If Not dict.ContainsKey(index) Then
'빈 Key 값에 할당하기 위해 기존에 Key가 존재하는지 확인 후 Add
dict.Add(index, val)
Exit Sub
End If
Next
End Sub
Public Sub removeDict(ByVal val As Integer)
If dict.ContainsValue(val) Then
'지우려는 Value의 item(Key, Value) 값을 가져와서 item.Key로 해당 Key 값을 알 수 있음
'AddDict에서 Value 중복을 방지했기 때문에 dict.First로 가져와도 됨
Dim item = dict.First(Function(x) x.Value = val)
dict.Remove(item.Key)
End If
End Sub
End Class
|
cs |
그리고 Dictionary 같은 경우에는 Key를 기반으로 자동으로 Sorting 정렬된다.
그래서 위의 실행결과를 보면,
13이 들어있던 [3, 13] 아이템을 삭제하고 그 다음에 16 값을 넣었을 때
위에서 빈 값이 있으면 그 자리에 넣게했기 때문에,
[3, 16]으로 들어가고 Dictionary가 자동으로 정렬되는 것을 확인할 수 있다.
728x90
반응형
'IT > DEV Study' 카테고리의 다른 글
[ML/Python] Keras를 이용한 Model 생성 및 학습 간단 정리 (2) | 2023.06.08 |
---|---|
[통신/네트워크] CRC 정리. CRC-16 C#/VB 코드. 온라인 CRC 변환기 링크. (3) | 2023.02.07 |
[Nomad Corders] NestJS로 API 만들기 #4 정리 (완강) (1) | 2022.07.27 |
[Nomad Corders] NestJS로 API 만들기 #3 정리 (358) | 2022.07.26 |
[Nomad Corders] NestJS로 API 만들기 #2.4 to #2.7 정리 (413) | 2022.07.25 |