答えて
ここにはanswerです。辞書 スロー
主な理由は、キーは常に参照 タイプであるため、ハッシュテーブルは はnullを返すことができる任意のV. 上で動作なし「エラー」 値がないことです。
価値があります: 'HashTable'はこのようにunsafeコードを書くことができます。 'var ht = new Hashtable(){{" A "、null}}; 文字列aVal =(文字列)ht ["A"]; string bVal =(string)ht ["B"]; 'どちらも' null'を返します。有効な値と存在しないキーを区別することはできません。少なくともバグは隠されていて、さらに悪いですが、辞書は例外を教えてくれます。 –
辞書[key]の値がnull値を格納するときとキーが存在しないときの間に曖昧さはありません。 Hashtable [key]は、nullを格納するかキーが存在しない場合にnullを返します。
辞書がスローする主な理由は、政治的です。効率性と使いやすさを保つためのいくつかの選択肢があります。実際には、妥当な値を返すと主張されている「不能性」についての主張は誤りであることを明確に証明するメソッド(TryGetValue)を提供します。しかし、TryGetValueは、インデクサーが簡単に行うことができたことを明確にするために、はっきりとした厄介な構文を強制します。
C#テンプレートは、参照セマンティクスと値セマンティクスのための別々の実装を簡単に構築する方法を提供します。また、テンペットや一部の演算子で使用されるバリューセマンティスの欠けているオブジェクトをシームレスに処理する2つの機能があります。ハッシュテーブルのセマンティクスを破る合理的な理由がないことを意味します。
このような人為的な手続きが非効率的であり、スレッドの安全性が損なわれるということは、誰もが "あなたにはありますか"というチェックと現実的な事実を主張するコレクションの学術的概念との長期的な政治的闘争です(アクセスを非アトミックにすることで、安全性の高い実装のスレッド安全性が損なわれます)。
'TryXX'パターンは、失敗した場合にメソッドが' default(T) 'を返すように指定し、' out bool'パラメータを使用してそれが働いたかどうかを示します。これは 'book ok; var theValue = myDict.TryGetValue(myKey、out ok); if(ok)... '。このようなパターンは、型推論と共分散の両方を可能にし、存在しないキーに対する望ましい振る舞いが 'default(T)'の値をとる場合を容易にします。 – supercat
- 1. null.asInstanceOf [Int]がNullPointerExceptionをスローしないのはなぜですか?
- 2. なぜz-indexが-1か。 z-index:1;の上に表示されます。
- 3. HibernateがObjectNotFoundExceptionをスローするイベントでSpringがDataAccessExceptionをスローしないのはなぜですか?
- 4. Z-IndexがIE8で動作しない
- 5. アプレットがAccessControlExceptionをスローしているのはなぜですか?
- 6. Z-indexが動作しない
- 7. z-indexとfloatが動作しない
- 8. z-indexがie8、ie7ではない
- 9. なぜAVCaptureStillImageOutput jpegStillImageNSDataRepresentationがNULLサンプルバッファで例外をスローしますか?
- 10. なぜこのコードが例外をスローしますか?
- 11. なぜこのint配列がIndexOutOfRangeExceptionをスローしますか?
- 12. なぜThreadAbortExceptionをスローしてもプロセスが終了しないのですか?
- 13. なぜByte.parseByte( "10000001"、2)がNFEをスローしますか?
- 14. なぜKafkaUtils.createDirectStreamがNoSuchMethodErrorをスローしますか?
- 15. なぜstd :: mapが例外をスローしますか?
- 16. なぜこれがnull参照例外をスローしますか?
- 17. 私のMySQL Index Cardinalityがゼロになったのはなぜですか?
- 18. 私のシングルトンクラスがStackOverflowerrorをスローするのはなぜですか?
- 19. なぜコンパイラはコンパイルエラーをスローしないのですか?
- 20. Boolean.class.newInstance()が例外をスローするのはなぜですか?
- 21. XmlDocument.LoadXmlがSystem.Net.WebExceptionをスローするのはなぜですか?
- 22. Observable.Generate()がSystem.StackOverflowExceptionをスローするのはなぜですか?
- 23. removeOnGlobalLayoutListenerがNoSuchMethodErrorをスローするのはなぜですか?
- 24. reader.GetOrdinal( "FieldName")が例外をスローするのはなぜですか?
- 25. なぜob_start gzandlerがブラウザで次のエラーをスローしていますか?
- 26. IEのZ-Indexが、Flashムービーでのやり方をレンダリングしないのはなぜですか?
- 27. kafka-logディレクトリに.indexファイルが存在するのはなぜですか?
- 28. 私のシンプルなCSS Z-Indexが機能しなくなったのはなぜですか?
- 29. なぜcpがコロンで終了しない場合、class.getClassLoader()がnullポインタをスローしますか?
- 30. なぜIterator.next()がConcurrentModificationExceptionをスローするのですか
同じことを知りたいですか?) –