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 に答える