問題タブ [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.
.net - .NETに「Number」構造体/クラスはありますか?
その数値の一部として先行ゼロを持つことができる可変長の数値を格納しようとしています。
先行ゼロに関する情報を失うことなくこのような値を格納でき、longの上限を超える可能性がある.NET Frameworkのクラスはありますか?
私は現在、これらを次のようなクラスに格納しています。BCLで使用可能な構造体またはクラスがない場合に、このクラスをより適切に記述できる方法はありますか。
これを構造体として使用する機能は、同等性を簡単にチェックする機能と同様に、非常に便利です。
太字/斜体の項目は、そのようなクラスの要件です。
c# - .NET の EnableDecompression の既定値が 2.0 と 3.0 の間で変更されたのはなぜですか?
私たちは .NET Web サービスを使用しています。非 WCF と WCF の両方ですが、レガシーな理由から、圧倒的多数は非 WCF ですが、かなり重く、Fiddlerで何かをテストしていたときに、応答本文のサイズがかなり大きいことに気付きました。大きい。次に、リクエスト ヘッダーにヘッダーがないことに気付きましたAccept-Encoding
。
掘り下げた後、プロパティのデフォルト値(すべてのWS スタブが派生するHttpWebClientProtocol.EnableDecompression
クラスから)が .NET BCL バージョン2.0と3.0の間で変更されたようです。その理由 (WCF に関連している可能性があります) と、別のライブラリにリンクするだけでかなり静かな他の [かなり] 基本的な変更があるかどうかについて、私は興味があります。wsdl.exe
.net - .NET dllをバンドルして、.NETのないマシンでアプリケーションを実行しますか?
AFAIK、ngenはMSILをネイティブコード(pre-JITとも呼ばれます)に変換しますが、起動時のパフォーマンスへの影響についてはあまり注意を払っていませんでした。Ngenされたアプリケーションには、引き続き.NET基本クラスライブラリ(ランタイム)が必要です。
基本クラスライブラリには.NETアセンブリに必要なものがすべて揃っているので(正しいですか?)、ランタイムをインストールする必要がないように、フレームワークのDLLをngenのアプリケーションと一緒に出荷することは可能でしょうか?(たとえば、ほとんどのWindows XPマシンのシナリオ)
ああ、 RemotesoftのSalamanderLinkerやXenocodeのPostbuildについては気にしないでください。それらは私の(そして多くの)現在の予算のためではありません(そしてそれらは単に仮想化された環境にフレームワークをバンドルしているようです、それは大きなダウンロードサイズと遅い起動時間を意味すると私は信じています)
編集:
私は今知っています、ngenは私が思ったことをしません。
しかし、VMを使用せずに.NETファイルをアプリケーションにバンドルすることは可能ですか?
c# - ステートメントに移動 有害と見なされますか?
上記の説明が正しければ、.Net BCL でリフレクターを使用すると、頻繁に使用されるのはなぜですか?
編集: 言い換えさせてください: 人間またはコンパイラによって書かれたリフレクターに表示されるすべてのGO-TOですか?
.net - クラス メンバーについて「.NET Compact Framework でサポートされている」と言及する必要があるのはなぜですか?
MSDN のドキュメントでは、多くの .NET クラス メソッド ( ArrayList など) で、「.NET Compact Framework でサポートされている」と述べられています。
.NET Compact Framework でサポートされるように、内部的にどのように変更されましたか? .NET ベース クラス ライブラリはすべて .NET コンパクト フレームワークで使用できると仮定しました。
.net - String.Formatのオーバーロードが存在するのはなぜですか?
私はReflectorを使用してString.Formatの実装を調べていましたが、1、2、3個の引数をとるString.Formatのオーバーロードは、オブジェクト配列をとるメソッドの最適化されたバージョンであるという印象を常に受けていました。しかし、私が見つけたのは、内部的にオブジェクト配列を作成してから、オブジェクト配列を受け取るメソッドを呼び出すことでした。
1引数
2つの引数
3つの引数
オブジェクト配列
内部的には、それらはすべて同じコードを使用することになります。したがって、1、2、および3引数バージョンを使用することは、オブジェクト配列バージョンよりも高速ではありません。
だから私の質問は-なぜそれらが存在するのですか?
値のコンマ区切りリストでオブジェクト配列バージョンを使用する場合、コンパイラは、params / ParamArrayキーワードが基本的に1、2、および3バージョンと同じであるため、引数をオブジェクト配列に自動的に変換するため、冗長に見えます。BCL設計者がこれらのオーバーロードを追加したのはなぜですか?
.net - IDictionary (非ジェネリック) が IEnumerable を継承しないのはなぜですか?
IDictionary<TKey, TValue>
は から継承していますIEnumerable<KeyValuePair<TKey, TValue>>
がIDictionary
、何らかの理由で から継承していませんIEnumerable<DictionaryEntry>
。なぜだろう?.OfType<DictionaryEntry>()
に対してクエリを実行する必要があるたびに、これを醜く書くのは嫌いIDictionary
です。
c# - BCL コレクションがクラスではなく構造体列挙子を使用するのはなぜですか?
変更可能な構造体が一般的に悪であることは誰もが知っています。IEnumerable<T>.GetEnumerator()
また、 type を返すためIEnumerator<T>
、構造体はすぐに参照型にボックス化され、最初から単に参照型である場合よりも多くのコストがかかると確信しています。
では、なぜ BCL ジェネリック コレクションでは、すべての列挙子が変更可能な構造体なのでしょうか? きっと、それなりの理由があったに違いない。私が思いつく唯一のことは、構造体を簡単にコピーできるため、任意の時点で列挙子の状態を保持できることです。しかしCopy()
、インターフェイスにメソッドを追加するIEnumerator
ことはそれほど面倒ではなかったので、これ自体が論理的な正当化であるとは思えません。
デザインの決定に同意しなくても、その背後にある理由を理解できるようになりたい.
.net - .NET アセンブリ フレームワークの依存関係を判断するためのツール
.NET アセンブリが動作するフレームワークを教えてくれるツールを探しています。より具体的には、その中のメソッドが必要とする BCL (基本クラス ライブラリ) のバージョン。
私を引き起こしたのはこれでした: 今日、私たちが作成しているアプリケーションに対するバグレポートを受け取りました. Int32,Boolean) 代わりに". そして実際、ユーザーは正しかった。WaitOne は .NET にずっと存在していましたが、int のみを取る特定のオーバーロードが 1.0、2.0 などのサービス パックで導入されました。率直に言って、私たちはそれをテストしていませんでした。
あらゆる種類のフレームワークがインストールされているマシンでアプリをテスト/ロードするのは非常に簡単ではありません。したがって、特定のアセンブリのメソッドが動作する正式にリリースされたフレームワークのバージョンを簡単に教えてくれるツールを探しています-または、さらに興味深いことに、どのバージョンで動作しないか、問題のあるメソッドは何か.
c# - ディレクトリの最大文字数または長さは?
C# を使用する場合、ディレクトリの一般的なパスに含めることができる最大文字数は?
たとえばC:\test\
、長さが 7 文字の場合、最大の長さは?