为什么这样做:
public int DoesEmailAddressExistsExcludingEmailAddressID(
string emailAddress,
string invitationCode,
int emailAddressID = 0,
int For = (int) Enums.FOR.AC)
而这不是
public int DoesEmailAddressExistsExcludingEmailAddressID(
string emailAddress,
string invitationCode,
int emailAddressID = 0,
int For = Enums.FOR.AC.GetHashCode())
其中AC是枚举。枚举的哈希码可以在运行时更改吗?
答案 0 :(得分:5)
GetHashCode
是一种方法。方法的返回值不是编译时常量,因为需要执行代码来确定返回值
无论方法是否始终返回都无关紧要。
答案 1 :(得分:2)
在程序运行时,Enum的哈希码很可能保持不变。但是,在编译时这不是保证。因此它不能是编译时常量。
此外,正如Daniel已经提到的那样,必须执行GetHashCode
来确定值,这显然不能在编译时完成。