HashTableSample해쉬테이블 사용 예제Example

1 minute read

해쉬테이블은 문자열 이름으로 소환되는 배열을 만들 수 있다.

public static Hashtable htHoga = new Hashtable();//htHoga라는 HashTable객체를 생성한다.

//ToolCS.CodeArray.Futures, Spreads는 종목코드를 갖고 있는 배열이다.

    const int 호가개수 = 5;
    public void HogaInit()
    {
        for (int i = 0; i < ToolCS.CodeArray.Futures.Length; i++)
        {
            htHoga.Add(ToolCS.CodeArray.Futures\[i\], NewHoga(ToolCS.CodeArray.Futures\[i\]));
        }
        for (int i = 0; i < ToolCS.CodeArray.Spreads.Length; i++)
        {
            htHoga.Add(ToolCS.CodeArray.Spreads\[i\], NewHoga(ToolCS.CodeArray.Spreads\[i\]));
        }

    }

    FutHoga NewHoga(string code)
    {
        FutHoga aHoga = new FutHoga();
        aHoga.종목코드 = code;
        aHoga.매도호가 = new double\[호가개수\];
        aHoga.매수호가 = new double\[호가개수\];
        aHoga.매도잔량 = new int\[호가개수\];
        aHoga.매수잔량 = new int\[호가개수\];

        for (int i = 0; i < 호가개수; i++)
        {
            aHoga.매도호가\[i\] = 0;
            aHoga.매수호가\[i\] = 0;
            aHoga.매도잔량\[i\] = 0;
            aHoga.매수잔량\[i\] = 0;
        }

        return aHoga;
    }

public struct FutHoga { public string 종목코드; public double[] 매도호가; public double[] 매수호가; public int[] 매도건수; public int[] 매수건수; public int[] 매도잔량; public int[] 매수잔량; }

그냥 내가 쓰던거 그대로 갖다 붙여놓은거…

나중에 꺼내쓸때는 htHoga(“101F6”);

이렇게 입력하면… 101F6는 Futures의 배열값을 꺼내준다.

원래 여기저기 다른 클래스랑 네임스페이스에 퍼져있던 코드를 모아놓은거라서…이거 그대로 붙여넣는다고 동작은 하지는 않겠지만… 참고정도는 될듯…

보정을 해야되는데 좀 귀찮은듯…

 

((Structs.StoHoga)Stock.htHoga[Code]).매도호가[i] = 500원

//이런식으로 꺼내쓸 수 잇다. 좀 복잡해보이지만…. 잘 생각해보면 어렵지는 않다. 배열을 문자열로 조회해야 하는 경우에 정말 유용하다. (Struct.StoHoga) 헤쉬테이블은 오브젝트 형태로 저장되기 때문에 구조체 형식으로 강제로 형변환을 해 줘야한다. 그리고 ()괄호로 한번 더 감싸주면…. 구조체로 변신~ 그리고 구조체처럼 쓰면된다.