RegisterHotKeyとObject.GetHashCode

[DllImport("user32.dll")]
static extern bool RegisterHotKey(IntPtr hWnd,int id,int fsModifiers,int vlc);

これはウインドウハンドル毎にホットキーをシステムに登録するための、Win32APIのC#におけるP/Invoke記述だ。
これを使ってアプリケーションにホットキーを設定しようと思ったのだが、まずは先達の例を見ようとネット上を探すと、こんなコードが引っ掛かった。

return RegisterHotKey(window.Handle, this.GetType().GetHashCode(), modkey, key);

問題は第二パラメタのidにType.GetHashCodeを使っている点だ。RegisterHotKeyのリファレンスでは

id
[入力]ホットキーの識別子を指定します。現在のスレッド内の他のホットキーは、同じ識別子を使うべきではありません。アプリケーションは、0x0000〜0xBFFF の範囲の値を指定しなければなりません。共有ダイナミックリンクライブラリ(DLL)は、0xC000〜0xFFFF(GlobalAddAtom 関数が返す範囲)の値を指定しなくてはなりません。他の共有 DLL との競合を避けるために、各 DLL は GlobalAddAtom 関数を使ってホットキーの識別子を取得するべきです。
- MSDN RegisterHotKey

とある。
前にどこかで、.NETのObject.GetHashCodeは一意のIdとして使っても大丈夫という記述を読んだことがあるが(場所は失念した)、通常のGetHashCode実装は以下のように

GetHashCode の既定の実装では、一意性や一貫性は保証されません。したがって、ハッシュ用の一意オブジェクト識別子として使用しないでください
- MSDN Object.GetHashCode メソッド

一意性は保障されないと書いてある。
まあ、通常はおとなしくアトムを使えば良いのだが、コードの記者がObject.GetHashCodeを使った意図が気になる。コードの出来からして、単なる手抜きとは思えないのだ。