РЕДАКТИРОВАТЬ:
System.HashCode
доступен в. NET Core тоже. Вы можете использовать HashCode.Combine
для этой цели, см .: https://docs.microsoft.com/en-us/dotnet/api/system.hashcode?view=netcore-2.1
var combined = HashCode.Combine("one", "two");
(предыдущий ответ ниже)
Длинный и подробные ответы можно найти здесь: { ссылка }
Если вы просто хотите получить простой ответ, вы можете объединить хеши объектов в новой структуре (кортеж, анонимный класс и т. д.). c) и позвоните GetHashCode()
, чтобы получить результат.
например,
public override int GetHashCode() {
return new { MyField1, MyField2 }.GetHashCode();
}
Если вы ответите на приведенный выше ответ, вы, конечно, можете, если вы хотите сделать его проще (?) создайте общий вспомогательный класс stati c, который сделает всю работу за вас:
public class MyHashCode
{
public static int Hash(params object[] values)
=> CustomHash(1009, 9176, values.Select(v => v.GetHashCode()).ToArray());
// From answer https://stackoverflow.com/a/34006336/25338
public static int CustomHash(int seed, int factor, params int[] vals)
{
int hash = seed;
foreach (int i in vals)
{
hash = (hash * factor) + i;
}
return hash;
}
}
и назовите его так:
public class UnitTest1
{
[Fact]
public void Test1()
{
string s1 = "yezz";
string s2 = "nope";
var hash = Utils.MyHashCode.Hash(s1, s2);
}
}