gpt4 book ai didi

c# - 当用作字典中的键时,覆盖结构的 GetHashCode 会导致装箱吗?

转载 作者:行者123 更新时间:2023-11-30 12:45:50 25 4
gpt4 key购买 nike

通常,如果一个结构实现了一个接口(interface),将这样的结构分配给一个接口(interface)变量会导致装箱,例如:

interface IFoo {}

struct S : IFoo {}

S s = ...
IFoo f = s; // boxing here

但也有异常(exception)。看来实现 IEquatable<T>并且在字典中使用这样的结构作为键,不会导致装箱。所以问题是,如果我只是覆盖 GetHashCode 怎么办?没有实现 IEquatable<T> ?会不会陷入某种特殊情况?

最佳答案

如果你不实现 IEquatable<T>那么在调用 Equals 时结构将被装箱. Equals是一个虚方法,因此需要一个引用来获取关联的方法表。

关于c# - 当用作字典中的键时,覆盖结构的 GetHashCode 会导致装箱吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com