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