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 변환기 링크. (4) | 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 |