Я использую RTBTextPointer в качестве пользовательского ключа в словаре ...словаря, используя это пользовательский ключ, но ключ всегда неравное
Init.SpintaxEditorPropertyMain.SpintaxListDict = new Dictionary<RTBTextPointer, SpintaxEditorProperties.SpintaxMappedValue>(new RTBTextPointerComparer());
Я Worte этого RTBTextPointer и классов RTBTextPointerComparer в библиотеке классов и использовать это в различных проектах Wpf ,
if (Init.SpintaxEditorPropertyMain.SpintaxListDict.ContainsKey(_index) == false)
{
Init.SpintaxEditorPropertyMain.SpintaxListDict.Add(_index,_SpintaxMappedVal);
}
каждый ContainsKey возвращает ложь, даже он содержит, поэтому запись дублирование происходит в словаре .. ничего плохого в моем "GetHashCode()"
public class RTBTextPointer
{
static int _row;
static int _column;
public int Row
{
get
{
return _row;
}
set
{
_row = value;
}
}
public int Column
{
get
{
return _column;
}
set
{
_column = value;
}
}
}
public class RTBTextPointerComparer : IEqualityComparer<RTBTextPointer>
{
public bool Equals(RTBTextPointer x, RTBTextPointer y)
{
bool result = int.Equals(x.Column, y.Column) && (int.Equals(x.Row, y.Row));
return result;
}
public int GetHashCode(RTBTextPointer obj)
{
var result = 0;
int hCode = obj.Column^obj.Row;
result = hCode.GetHashCode();
return result;
}
}
Пожалуйста, помогите мне Спасибо заранее
Что именно вы имеете в виду, всегда ключ не равен, даже равен. .? – jdphenix
everyt time containsskey возвращает false if (Init.SpintaxEditorPropertyMain.SpintaxListDict.ContainsKey (_index) == false) { Init.SpintaxEditorPropertyMain.SpintaxListDict.Add (_index, _SpintaxMappedVal); } – Jay