HashTableSample해쉬테이블 사용 예제Example

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

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) 헤쉬테이블은 오브젝트 형태로 저장되기 때문에 구조체 형식으로 강제로 형변환을 해 줘야한다.
그리고 ()괄호로 한번 더 감싸주면.... 구조체로 변신~
그리고 구조체처럼 쓰면된다.