MemeoyCache가 캐시 데이터를 저장하기 위해 얕은 사본을 사용하는 이유는 무엇입니까? 어떠한 제안? memoryCache가 데이터 참조 만 사용하는 경우 CacheMemory에 어떤 유형의 데이터 저장소가 있는지.왜 MemoryCache가 얕은 복사본을 사용합니까?
public static void TestmemoryCacheCloning()
{
var memoryCache = new MemoryCache("Test");
var employee = new Employee
{
EmployeeId = 1,
Name = "A",
Aaddress = new Aaddress
{
City = "Delhi",
State = "Delhi",
Country = "India"
}
};
memoryCache.Add("Test", employee, DateTimeOffset.Now.AddDays(1));
Console.WriteLine(employee.GetHashCode());
var output = memoryCache.Get("Test");
Console.WriteLine(output.GetHashCode());
}
출력 :
49496962
49496962
딥 복사본의 이점은 무엇입니까? 그것은 단지 중복과 아마도 오류로 이어질 것입니다. 만약 당신이 그것을 바꾼 후에 employee.Name을 바꿨다면 어떤 Name이 맞을까요? –
GetHashCode 메서드는 참조 동등성을 결정할 때 사용해서는 안됩니다. use object.ReferenceEquals .. 인스턴스가 동일한 값, 즉 값으로 간주되어야하는 경우 해시 코드는 동일해야합니다. 또한, 2 개의 해시 코드가 동일하다는 사실은 인스턴스가 동일하게 간주 될 수 있다는 것을 의미하지 않으며, 해시 코드가 동일하지 않고 인스턴스가 동일하지 않은 것으로 간주 될 수 있다는 것을 의미하지 않습니다. – MaLio
MemoryCache가 얕은 복사본을 사용하는지 여부에 관계없이, GetHashCode()'는 두 개의 엔티티가 동일한 참조를 가지고 있음을 증명합니다. –