可选参数:编译时间常数问题

Jac*_*ack 1 .net c# compiler-errors

为什么这样有效:

public int DoesEmailAddressExistsExcludingEmailAddressID(
    string emailAddress, 
    string invitationCode, 
    int emailAddressID = 0, 
    int For = (int) Enums.FOR.AC)
Run Code Online (Sandbox Code Playgroud)

而事实并非如此

public int DoesEmailAddressExistsExcludingEmailAddressID(
    string emailAddress, 
    string invitationCode, 
    int emailAddressID = 0, 
    int For = Enums.FOR.AC.GetHashCode())
Run Code Online (Sandbox Code Playgroud)

AC是枚举的地方.枚举的哈希码可以在运行时更改吗?

Dan*_*rth 5

GetHashCode是一种方法.方法的返回值不是编译时常量,因为需要执行代码来确定返回值.
方法是否始终返回无关紧要.