問題タブ [keynotfoundexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 役に立たない例外 (NullReferenceException、KeyNotFoundException)
C# の例外は、提供される情報が非常に少ないため、非常に煩わしいと思います。これの理由は何ですか?
NullReferenceException または KeyNotFoundExceptions はデバッグが難しく、スタックトレースで行番号を取得できない場合があります。例外自体が詳細情報を提供できないのはなぜですか?
例えば:
"Properties" が null の場合、NullReferenceException が発生します。
「System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません」
取得できない理由:
「System.NullReferenceException: オブジェクト参照'Properties'がオブジェクトのインスタンスに設定されていません」
これはより便利であり、CLR はどの参照が null であるかを認識しています。
Process("dummy") など、存在しないキーを渡す場合も同様です。
「System.Collections.Generic.KeyNotFoundException: 指定されたキーがディクショナリに存在しませんでした」
取得できない理由:
「System.Collections.Generic.KeyNotFoundException: キー'ダミー'が辞書に存在しませんでした」
CLR は、どのキーが渡されて見つからなかったのかを認識しています。
生産的な環境でそのようなエラー (不正なキーが渡される) をデバッグしようとし、コードを次のようにより堅牢にしました。
しかし、なぜ私がこれをしなければならないのか、通常、CLR は何が問題なのかを詳細に教えてくれます。例外が発生したときに詳細情報を取得するために、このようにすべてのコードをラップすることはできません。
ios - Xamarin Studio が間違った名前空間でファイルを作成する
私は現在 Xamarin Studio を使用しており、MvvmCross フレームワークでアプリを開発しています。
私の問題は、「Views」という名前のフォルダーに新しいファイルを作成しようとすると、名前空間に「.Views」が含まれないことです。
Xamarin.Client.iOS.Views の代わりに Xamarin.Client.iOS があります。そのため、MvvmCross フレームワークは私のビューを見つけず、KeyNotFoundException : could not find view for [MyViewModel]
アプリが正常に動作し、ビューが見つからないため、XCode が名前空間を変更したのではないかと思います。
名前空間の問題だと思いますが、よくわかりません。実際、私の「ビュー」ファイルは「.Views」名前空間にはありませんが、「Views」フォルダーにはあります。
適切な名前空間でビューを作成するにはどうすればよいですか? .cs および .designer.cs ファイルで変更しても KeyNotFoundException は修正されないため...
何かアイデアがあれば...
c# - workitem.open() KeyNotFoundException TFS 2013
ディクショナリに値が見つからなかったことを示すこの例外「指定されたキーがディクショナリに存在しませんでした」で立ち往生していますが、奇妙なことに、ディクショナリを使用していません。内部コードだと思いますC# の TFS API の。例外を発生させるコードの一部を次に示します。
このコードは、作業項目を取得し、TFS API を使用していくつかの更新を実行するループの一部です。その後、メソッドSubmitChangesToDatabaseを使用してデータベースの読み取り専用フィールドを直接変更します。メソッドOpen()を呼び出すと、例外が発生します。スタック トレースは次のとおりです。
c# - キーが存在するにもかかわらず Dictionary.GetKey が False を返す - GetHashCode/Equals は既にオーバーライドされています
これはC#にあります。キーがそこにあることを知っていても、Dictionary.ContainsKey が false を返すという問題があります。
残念ながら、表示するコードはありません。コードをまとめるのは簡単ではありません。複数のクラスに分散され、イベントなどによってトリガーされます。私が書いた簡単な単体テストでは、問題は再現されませんでした。
デバッグ セッション中の即時ウィンドウの出力を次に示します (コメントを追加し、詳細を保護するために変更しました)。
いくつかの追加メモ:
- キーとして使用される型は、GetHashCode および Equals のメソッドをオーバーライドしています。
- ディクショナリは、追加のコンストラクタ引数なしで new Dictionary() として構築されます。
- デバッグにより、キー タイプの GetHashCode が呼び出されることを確認しましたが、Equals(obj) は呼び出されません。
- アプリケーションを実行すると、キーの型を持つ DLL が 1 つだけ読み込まれるため、同じ DLL の異なるバージョンで同じ型が使用されることはおそらくありません。
なぜこれが起こっているのか誰にも分かりますか?
助けてくれてありがとう - 私はここでアイデアを使い果たしています.
c# - AfterLabelEdit イベントが発生すると、c# ListViewItem が編集モードでスタックする
タイトルが示すように、AfterLabelEdit が起動すると、Return キーを押したり空のスペースをクリックしたりしても、ListViewItem が編集モードでスタックします。
エラー:
タイプ 'System.Collections.Generic.KeyNotFoundException' の初回例外が mscorlib.dll で発生しました
コードは次のようになります。
キーと値が null ではないことは確かです。何か案は?まだ不明な点があれば質問してください。