Сообщение Re: Dictionary<X, Dictionary<Y, Z>> от 19.10.2015 7:53
Изменено 19.10.2015 8:26 Serginio1
Здравствуйте, _NN_, Вы писали:
Вместо двух словарей проще использовать один с составным ключом. Редко пеишу на C# но что типа такого
Вместо двух словарей проще использовать один с составным ключом. Редко пеишу на C# но что типа такого
public struct MyStruct<X,Y>
{
public X СвойствоX;
public Y СвойствоY;
public MyStruct(X СвойствоX, Y СвойствоY)
{
this.СвойствоX = СвойствоX;
this.СвойствоY = СвойствоY;
}
public override int GetHashCode()
{
//Упростим задачу и сделаем по простому
string str= Convert.ToBase64String(BitConverter.GetBytes(СвойствоX.GetHashCode()))+ Convert.ToBase64String(BitConverter.GetBytes(СвойствоY.GetHashCode()));
return str.GetHashCode();
}
public override bool Equals(object obj)
{
if (obj.GetType()!= GetType()) return false;
var Объект = (MyStruct<X, Y>)obj;
return СвойствоX.Equals(Объект.СвойствоX) && СвойствоY.Equals(Объект.СвойствоY);
}
}
Re: Dictionary<X, Dictionary<Y, Z>>
Здравствуйте, _NN_, Вы писали:
Вместо двух словарей проще использовать один с составным ключом. Редко пеишу на C# но что типа такого
Вместо двух словарей проще использовать один с составным ключом. Редко пеишу на C# но что типа такого
public struct MyStruct<X,Y>
{
public X СвойствоX;
public Y СвойствоY;
public MyStruct(X СвойствоX, Y СвойствоY)
{
this.СвойствоX = СвойствоX;
this.СвойствоY = СвойствоY;
}
public override int GetHashCode()
{
//Упростим задачу и сделаем по простому
string str= Convert.ToBase64String(BitConverter.GetBytes(СвойствоX.GetHashCode()))+ Convert.ToBase64String(BitConverter.GetBytes(СвойствоY.GetHashCode()));
return str.GetHashCode();
}
//Можно взять из Tuple
//internal static int CombineHashCodes(int h1, int h2)
//{
// return (h1 << 5) + h1 ^ h2;
//}
public override bool Equals(object obj)
{
if (obj.GetType()!= GetType()) return false;
var Объект = (MyStruct<X, Y>)obj;
return СвойствоX.Equals(Объект.СвойствоX) && СвойствоY.Equals(Объект.СвойствоY);
}
}