問題タブ [boxing]
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 - 整数リテラル (ToString など) でオブジェクト メソッドを呼び出す場合、CLR は最初にリテラルをボックス化しますか?
整数リテラルで ToString() を呼び出すためにボクシングが行われているのだろうか (5):
そうでない場合、CLR が ToString() メソッドを呼び出せるようにするために何が行われているのでしょうか?
c# - out パラメータと ref パラメータを使用する場合のボックス化とボックス化解除
メソッドが ValueType の out/ref パラメータを受け入れると、ボックス化/ボックス化解除が発生しますか?
vb.net - 不明な入力でのボクシング/アンボクシングの回避
XMLを解析し、いくつかのデータを取得するアプリケーションを作成しています。各xmlノードは、データ(const)、データを取得するレコードセットの列名(var)、条件(enum)などに応じて可能なデータ値のサブセットを指定します。また、データとともに、データをユーザーに表示する必要がある形式を指定する場合もあります。
重要なのは、ノードタイプごとに値を異なる方法で処理し、いくつかのアクチノンを実行する必要があるため、ノードごとに、後でフォーマットするために戻り値を一時変数に格納する必要があるということです...フォーマットできることはわかっていますそれはすぐそこにあり、それを返しますが、それは自分自身を繰り返すことを意味し、私はそうすることを嫌います。
したがって、質問:型が不明でジェネリックを使用できない場合に、ボックス化/ボックス化解除を回避しながら、返す値を一時変数に格納するにはどうすればよいですか?
PS:パーサー、XMLスキーマ、およびレコードセットを埋めるビューを設計しているので、すべての変更が妥当です。
アップデート
コードもXML値も投稿できませんが、これはXML構造と実際のタグです。
c# - ボックス化されたブール型で==演算子とEqualsメソッドを使用することの違いは何ですか?
これらの2つのステートメントを考えると...
最初のステートメントはfalseを返します。2番目のステートメントはtrueを返します。
最初のステートメントがfalseを返す理由を理解しています。ブール値がボックス化されている場合、それは参照型になり、2つの参照は等しくありません。しかし、なぜ/どのようにして2番目のステートメントが真になるのでしょうか?
c# - .NETでは、インターフェイスパラメータを使用してメソッドに構造体を渡すと、値がボックス化されますか?
簡単なテストから、構造体をメソッドに渡すと値で渡されますが、最初にインターフェイスに割り当てると、参照で渡されることがわかります。
だから私の質問は、このような構造体を渡すためのボクシング操作はまだありますか?
.net - 参照型のみを格納する場合、ジェネリック コレクションを使用する利点はありますか?
私は本を読んでいて、ジェネリックを使用すると、プログラマーは、例えばStack.
スタック(ジェネリックではない)は参照型変数のみを保持でき、キャストのみでボクシングは行われないため、完全には正しくないと思います。
編集:私の知る限り、ボクシングは値型からオブジェクトへの変換のみに関連しています。それは正しいですか、それとも何か不足していますか?
c# - ジェネリック制約は、暗黙的に実装されたインターフェイスを持つ値型のボックス化をどのように防ぎますか?
私の質問は、これに多少関連しています:明示的に実装されたインターフェイスと一般的な制約。
ただし、私の質問は、コンパイラがジェネリック制約を有効にして、インターフェイスを明示的に実装する値型をボックス化する必要をなくす方法です。
私の質問は2つの部分に要約されると思います:
明示的に実装されたインターフェイス メンバーにアクセスするときに、値の型をボックス化する必要がある舞台裏の CLR 実装で何が起こっているのか、および
この要件を削除する一般的な制約はどうなりますか?
いくつかのコード例:
そして結果のIL:
重要な呼び出しはconstrained !!Tの代わりですbox TestStructが、後続の呼び出しはcallvirtどちらの場合でもあります。
したがって、仮想呼び出しを行うために必要なボックス化が何であるかはわかりません。特に、値型に制約されたジェネリックを使用してボックス化操作の必要性がなくなる方法を理解していません。
事前にみんなに感謝します...
java - 整数ラッパークラスと==演算子-動作はどこで指定されますか?
の範囲で==(ある場合)を返すことがわかりましたが-128 - 127、なぜそのような仕様があるのですか?
c# - ジェネリックはどのようにボクシングの必要性をなくしたり減らしたりしますか?
John Sharp による本 VS 2010 を読むと、ジェネリックスにより、キャストの必要性がなくなり、値の型のボクシングを減らすことができると書かれています。キャストだけでなく削除されたと思いましたか?誰か説明してくれませんか?
c# - プリミティブ データ型を使用し、C# の文字列で使用するとボックス化が発生する
このようなものを使用すると、ボックス化操作 [パフォーマンスの低下] はありますか
それ以外の場合、これを使用すると、ボクシングは発生しません。
わずかなパフォーマンスの低下でも回避する必要があるため、最適なオプションを知りたいと思っています。また、パフォーマンスの低下に関する記述とそれを克服する方法について学ぶことができるように、コンテンツへのリンクも提供してください。