問題タブ [base-class-library]

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.

0 投票する
2 に答える
174 参照

c#-3.0 - SyncHashtable this[オブジェクト キー] はロックを使用しません

SyncHashtablein defined in .Net フレームワーク BCLの実装を行いました。

このクラスは、複数のリーダーとライターへの同期アクセスを提供します。

メソッドの1つは次のように実装されています

私の意見では、オブジェクトにアクセスする前に get メソッドも Syncroot をロックする必要があります。

シナリオを考えてみましょう:

スレッド 1: からキーを削除していHashtableます。

スレッド 2 : キーを使用してオブジェクトを読み取る。

オブジェクトの読み取り中にスレッド 2 でコンテキスト スイッチが発生し、スレッド 1 がオブジェクトを削除すると、読み取り操作が失敗するか、一貫性のない結果が得られます。

したがって、このメソッドをこのように実装することはできませんでした

ありがとう

0 投票する
7 に答える
13191 参照

c# - 辞書が「順序付けられていない」のはなぜですか?

ここでの多くの質問への回答としてこれを読みました。しかし、それは正確にはどういう意味ですか?

上記のコードは期待どおりに動作するようです。では、どのように辞書は順不同とみなされるのでしょうか? 上記のコードはどのような状況で失敗する可能性がありますか?

0 投票する
6 に答える
208 参照

c# - .NETの組み込みクラスの使用に固有のパフォーマンスの大幅な向上はありますか?

簡単な質問...

他の言語では、パフォーマンス上の理由から、ライブラリのコードの一部がプラットフォーム固有のストレートCで記述されている場合があることを私は知っています。このような場合、可能な限りライブラリコードを使用することで、パフォーマンスを大幅に向上させることができます。

では、.NETプラットフォームはこれを行いますか?Microsoftの基本クラスライブラリの実装は、マネージコードで一致することを期待できない方法で最適化されていますか?

自分で作成する代わりに、KeyValuePairをタイプセーフなタプル構造体として使用するようなものはどうでしょうか。

0 投票する
2 に答える
54 参照

c# - BCL で www.abc.com/def/ghi から「ghi」を取得する組み込み関数はありますか?

BCLでghifromを取得する組み込み関数はありますか? www.abc.com/def/ghiまさにそれを行う小さなメソッドを作成するのは非常に簡単であることはわかっていますが、それを処理してくれる何かがすでにあるのではないかと思います。

それも私defを得ることができれば、それはabcボーナスになる.

0 投票する
2 に答える
1172 参照

.net - XElement.CreateNavigator() と XPathDocument().CreateNavigator() の違い

次のテストは失敗します。r1 に山かっこがないようですが、方法を知っている人はいますか? ある種のエンコーディングエラーだと思いますか?

ここでの問題は、意味的には同等であるが字句的に異なるxmlであると言える限りではありませんが、r1の場合の結果のxmlにはxmlタグがありません。興味深いことに、使用しvar nav3 = XElement.Load(stream).CreateReader();ても問題なく動作します。

0 投票する
1 に答える
5676 参照

c# - なぜmath.Ceiling(double a)はintを直接返さないのですか?

重複の可能性:
Math.Round / Floor / Ceilingがlongまたはintを返さないのはなぜですか?

msdnはこのメソッドを定義しました:指定された倍精度浮動小数点数以上の最小の整数を返します。

しかし実際には、それは

intを直接返さないのはなぜですか?マイクロソフトはどう思いますか?

0 投票する
1 に答える
414 参照

.net - PrincipalPermission(Attribute) が認証タイプを尊重しないのはなぜですか?

IIdentityインターフェイスはAuthenticationType、ユーザーがx509または基本的なユーザー名/パスワード認証でログオンする場合、状況が少し異なるため、考慮したいプロパティを公開します。

しかし、私はできません。さらに、 と の両方PrincipalPermissionPrincipalPermissionAttribute封印されているため (ありがとうございます)、必要な機能を追加できません。これは何らかの特別な理由によるものですか、それとも単なる設計上の欠陥ですか? 回避策はありますか?

0 投票する
2 に答える
6108 参照

c# - BCLにAutoResetEventSlimがないのはなぜですか?

AutoResetEventSlimBCLにクラスがないのはなぜですか?

を使用してシミュレーションできますManualResetEventSlimか?

0 投票する
5 に答える
1121 参照

c# - Object.GetHashCode()をGuidに変換する

アプリの起動時とシャットダウン時に状態を管理するために、オブジェクトにGUIDを割り当てる必要があります。を使用してルックアップ値を辞書に保存できるようです。

ここで知っておくべき潜在的な問題はありますか?

ノート

これは、実行の実行間で持続する必要はありません。そのようなGUIDのみです。

  • オブジェクトを作成します
  • gethashcode()、新しいまたは古いGUIDに関連付ける
  • アプリが終了する前に、gethashcode()とルックアップGUIDを使用して、GUIDを使用して永続化エンジンにupdate()またはinsert()します。

    唯一の前提は、プロセスの実行中、gethashcode()の一貫性が維持されることです。

    また、gethashcode()は同じオブジェクトタイプ(ウィンドウから派生)で呼び出されます

アップデート2-これが全体像です

  • 実行間でWPFユーザーコントロール(後でUCとして参照)に関する情報を格納するステートマシンを作成します
  • ユーザーコントロールの種類は時間の経過とともに変化する可能性があります(追加/削除)
  • 最初の実行では、以前の状態はありません。ユーザーはUCのサブセットと対話し、状態を変更します。これは、アプリの再起動時に再作成する必要があります。
  • この状態のスナップショットは、アプリが通常のシャットダウンを行ったときに取得されます
  • また、UCタイプの複数のインスタンスが存在する可能性があります
  • シャットダウン時に、各インスタンスにGUIDが割り当てられ、タイプ情報と状態情報とともに保存されます
  • これらのGUIDもすべてコレクションに保存されます
  • 再起動時に、GUIDごとに、オブジェクトを作成し、ref / guidを保存し、インスタンスごとに状態を復元して、アプリが以前とまったく同じように見えるようにします
  • ユーザーは、UCインスタンス/タイプを追加または削除したり、システムと対話したりできます。
  • シャットダウン時に、状態は再び保存されます
  • この時点での選択は、以前のすべての状態を削除/削除し、新しい状態情報を永続層(sql db)に挿入することです。
  • 時間の経過に伴う観察/分析では、多くのインスタンスが一貫性/静的であり、変更されないことがわかります-状態情報が非常に大きくなり、非ローカルデータベースに保存されるため、状態を再度削除/挿入する必要はありません
  • したがって、変更デルタのみが保持されます
  • デルタを計算するには、参照の寿命を追跡する必要があります
  • 現在List<WeakReference>、起動時に保存されています
  • シャットダウン時に、このリストと画面に表示されている実際のUCを繰り返し処理し、それに応じてキーを追加/更新/削除します
  • デルタを永続性に送信する

上記がそれを明らかにすることを願っています。

WeakReferenceだから今問題は-なぜリストを反復しながらnull参照のテストを排除する代わりに(usercontrolのみの)HashCodeを保存しないのですか?

更新3-すべてに感謝します。最後に弱参照を使用します

0 投票する
1 に答える
2313 参照

c# - .NET/BCL ソースの「string.Empty」の上の紛らわしいコメントの意味は?

string.Emptyが であり、 ではreadonlyない理由を理解しようとしていconstます。この投稿を見ましたが、マイクロソフトが書いたコメントがわかりません。Jon Skeetがコメントで書いたように、 「わかりません。正直言って、あまり意味がありません...」

共有ソース共通言語インフラストラクチャ 2.0 リリース。string.cs は sscli20\clr\src\bcl\system\string.cs にあります

ここには String コンストラクター呼び出しが表示されず、さらに、リテラルとしてマークされています - ""

誰かが平文で説明してくれませんか、コメントの意味と、なぜではstring.Empty readonlyないのconstですか?


更新:
Eric Lippertは、削除された回答にコメントしました:

私は昼食時に C# のベテランの 1 人にこのことについて尋ねました。