私はthis answer to a similar questionを見ましたが、これらのタイプの値をハードコードすることは常に怖いです(特に私のアプリケーションをWindowsとMonoで実行したいからです)。私はちょうどコードで使用できるREGDB_E_CLASSNOTREGの定義された定数はありますか?REGC_E_CLASSNOTREGのErrorCodeをチェックする定数を定義しました
答えて
REGDB_E_CLASSNOTREG
の定義済みの定数はありますか?コードで使用できますか?
不機嫌な答えは:
はい、それは次のようになります。
public const int REGDB_E_CLASSNOTREG = unchecked((int)0x80040154);
本当の答え:
いいえ、.NET Frameworkの公共何もないことその価値をあなたのために定義します。最初にCOMException
がスローされているという事実は、特定のエラーコード(実際にはHRESULT
の値が基になるCOM関数によって返されます)が.NET Frameworkが認識し、より具体的かつ有益な例外タイプ。 documentationが示しているように、COMException
は実際にはErrorCode
プロパティを含む多目的例外です。したがって、呼び出されたユーザーが返したHRESULT
を確認して、一般的な例外の根本的な原因を特定できます。
これらのHRESULT
の値は、実際にはWindows SDKに含まれているWindowsヘッダーファイルで定義されています。 #include
これらのヘッダーはCまたはC++でWindowsアプリケーションを作成するときに.NETの管理された世界では、適切な定義をソースファイルにコピーすることで自分で定義する必要があります。
逆互換性がどれほど重要であり、いくつのアプリケーションが壊れるかを考えれば、この値が少なくともWindowsでは変わることはほとんどありません。このような値は、合理的には定数と見なすことができます。しかし、私はまだそれらを「マジックナンバー」としてハードコードしません。上のようにpublic定数を定義すると、はに変更されました。コードを変更してから再コンパイルするだけで済みます。
Monoに関しては、この値が必要な場合は、最終的には上記と同じことが行われます。ランタイムバージョンのソースファイルのどこかには、internal const int ...
のような宣言がたくさんあります。
- 1. スキーム関数のチェックを定義する
- 2. 未定義をチェックすると、未定義のエラーが発生します
- 3. 例外のErrorCodeを設定する
- 4. ifステートメントで変数を定義してチェックする
- 5. 未定義の変数エラーを定義しようとしました
- 6. スカラ関数変数:デフォルト値を使用する(関数定義または変数定義で定義する)
- 7. チェックすると定義されたタイムスパン
- 8. Capistranoタスクの未定義変数のチェック
- 9. (複数)ロールの定義とチェックH2
- 10. Qlikview - サーバーを定義するグローバル変数を設定します
- 11. 処理(タイプ|未定義)は、Typescriptとのインターフェースをチェックします
- 12. C++:関数を定義したときの未定義関数エラー
- 13. 未定義の変数値をチェックする方法は?
- 14. 未定義の変数javascriptをチェックする方法は?
- 15. 定数としてアプリケーションデリゲートを定義しますか?
- 16. コアJavaプロジェクトの定数を定義するインタフェースまたはユーティリティクラス
- 17. PHP:クラス外またはコンストラクタ内の定数を定義しますか?
- 18. はテンソルフローの損失関数を定義しましたか?
- 19. リアクションで未定義のチェック
- 20. ブロックを定義し、ヒューゴテーマでオーバーライドを定義します。
- 21. Cで定数をどのように定義しますか?
- 22. OCamlで演算子の測定関数を定義します。
- 23. 複数の場所で要素の再定義を定義します
- 24. 複数の定義が定義されていない場合のプリプロセッサのチェック
- 25. TSQL定義:スキーマ定義なしの一時テーブル(またはテーブル変数)
- 26. は私が今、プロットしたい機能定義した定義関数
- 27. ラジオオプションを「チェック済み」に設定しましたが、値が「未定義ですか?」
- 28. Powershell:コンソールメニューで変数/ Read-Hostの形式を定義/定義します。
- 29. JSR-363を使用してカスタムユニット(または定義済みの数量) "ロール"を定義する方法は?
- 30. smoothscrollByを定義します
「0x80040154」**ではありません。「0x80040514」です。 –