AutoCompleteStringCollection 클래스는 확실히 파생되지 않으므로 두 개의 매개 변수 인 키와 값을 사용하는 Add 오버로드를 만들 수 있습니다.
그런 다음 사전에서 추적 할 수 있습니다. 당신은 (한 번 기본 클래스의 컬렉션과 한 번 사전에) 두 번 문자열을 저장해야하지만 당신은 다음과 같이 조회 방법을 추가 할 수 있습니다 내가 제대로 이해하면
class KeyedAutoCompleteStringCollection : AutoCompleteStringCollection {
private readonly Dictionary<string,string> keyedValues =
new Dictionary<string,string>(StringComparer.OrdinalIgnoreCase);
public void Add(string value, string key) {
base.Add(value);
keyedValues.Add(value, key); // intentionally backwards
}
public string Lookup(string value) {
string key;
if (keyedValues.TryGetValue(value, out key)) {
return key;
}
else {
return null;
}
}
}
내가 AutoCompleteCollection에서 상속받을 수 있고 add 및 get을 다시 구현할 수 있다고 생각했지만 toString, getHashCode 및 Equals 만 재정의 할 수 있습니다. – irco
조쉬의 답변에 응답하는 경우 해당 답변에 게시해야합니다. 귀하의 의견에 관해서는, 당신은 같은 이름이지만 다른 매개 변수를 다른 메서드를 구현할 수있는 과부하. 가상 멤버 만 재정의 할 수는 있지만 언제나 오버로드 할 수 있습니다. –
"다시 구현"(재정의) 할 필요가 없습니다. 대신 과부하를 추가합니다. 이 메서드는 하나의 매개 변수를 사용하는 기존의 Add 메서드를 대체하지 않고 2 개의 매개 변수를 사용하는 추가 Add 메서드를 추가합니다. 내 대답을 보아라. – Josh