1

为什么这有效:

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 是枚举。枚举的哈希码可以在运行时更改吗?

4

2 回答 2

5

GetHashCode是一种方法。方法的返回值不是编译时常量,因为需要执行代码来确定返回值。
方法返回是否始终相同并不重要。

于 2012-09-04T14:58:58.680 回答
2

Enum 的哈希码很有可能在程序运行时保持不变。但是,这在编译时不能保证。因此它不能是编译时常量。

此外,正如丹尼尔已经提到的,GetHashCode必须执行以确定值,这显然不能在编译时完成。

于 2012-09-04T15:01:06.137 回答