問題タブ [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.

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

.net - 整数リテラル (ToString など) でオブジェクト メソッドを呼び出す場合、CLR は最初にリテラルをボックス化しますか?

整数リテラルで ToString() を呼び出すためにボクシングが行われているのだろうか (5):

そうでない場合、CLR が ToString() メソッドを呼び出せるようにするために何が行われているのでしょうか?

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

c# - out パラメータと ref パラメータを使用する場合のボックス化とボックス化解除

メソッドが ValueType の out/ref パラメータを受け入れると、ボックス化/ボックス化解除が発生しますか?

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

vb.net - 不明な入力でのボクシング/アンボクシングの回避

XMLを解析し、いくつかのデータを取得するアプリケーションを作成しています。各xmlノードは、データ(const)、データを取得するレコードセットの列名(var)、条件(enum)などに応じて可能なデータ値のサブセットを指定します。また、データとともに、データをユーザーに表示する必要がある形式を指定する場合もあります。

重要なのは、ノードタイプごとに値を異なる方法で処理し、いくつかのアクチノンを実行する必要があるため、ノードごとに、後でフォーマットするために戻り値を一時変数に格納する必要があるということです...フォーマットできることはわかっていますそれはすぐそこにあり、それを返しますが、それは自分自身を繰り返すことを意味し、私はそうすることを嫌います。

したがって、質問:型が不明でジェネリックを使用できない場合に、ボックス化/ボックス化解除を回避しながら、返す値を一時変数に格納するにはどうすればよいですか?

PS:パーサー、XMLスキーマ、およびレコードセットを埋めるビューを設計しているので、すべての変更が妥当です。


アップデート

コードもXML値も投稿できませんが、これはXML構造と実際のタグです。

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

c# - ボックス化されたブール型で==演算子とEqualsメソッドを使用することの違いは何ですか?

これらの2つのステートメントを考えると...

最初のステートメントはfalseを返します。2番目のステートメントはtrueを返します。

最初のステートメントがfalseを返す理由を理解しています。ブール値がボックス化されている場合、それは参照型になり、2つの参照は等しくありません。しかし、なぜ/どのようにして2番目のステートメントが真になるのでしょうか?

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

c# - .NETでは、インターフェイスパラメータを使用してメソッドに構造体を渡すと、値がボックス化されますか?

簡単なテストから、構造体をメソッドに渡すと値で渡されますが、最初にインターフェイスに割り当てると、参照で渡されることがわかります。

だから私の質問は、このような構造体を渡すためのボクシング操作はまだありますか?

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

.net - 参照型のみを格納する場合、ジェネリック コレクションを使用する利点はありますか?

私は本を​​読んでいて、ジェネリックを使用すると、プログラマーは、例えばStack.

スタック(ジェネリックではない)は参照型変数のみを保持でき、キャストのみでボクシングは行われないため、完全には正しくないと思います。

編集:私の知る限り、ボクシングは値型からオブジェクトへの変換のみに関連しています。それは正しいですか、それとも何か不足していますか?

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

c# - ジェネリック制約は、暗黙的に実装されたインターフェイスを持つ値型のボックス化をどのように防ぎますか?

私の質問は、これに多少関連しています:明示的に実装されたインターフェイスと一般的な制約

ただし、私の質問はコンパイラがジェネリック制約を有効にして、インターフェイスを明示的に実装する値型をボックス化する必要をなくす方法です。

私の質問は2つの部分に要約されると思います:

  1. 明示的に実装されたインターフェイス メンバーにアクセスするときに、値の型をボックス化する必要がある舞台裏の CLR 実装で何が起こっているのか、および

  2. この要件を削除する一般的な制約はどうなりますか?

いくつかのコード例:

そして結果のIL:

重要な呼び出しはconstrained !!Tの代わりですbox TestStructが、後続の呼び出しはcallvirtどちらの場合でもあります。

したがって、仮想呼び出しを行うために必要なボックス化が何であるかはわかりません。特に、値型に制約されたジェネリックを使用してボックス化操作の必要性がなくなる方法を理解していません。

事前にみんなに感謝します...

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

java - 整数ラッパークラスと==演算子-動作はどこで指定されますか?

の範囲で==(ある場合)を返すことがわかりましたが-128 - 127、なぜそのような仕様があるのですか?

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

c# - ジェネリックはどのようにボクシングの必要性をなくしたり減らしたりしますか?

John Sharp による本 VS 2010 を読むと、ジェネリックスにより、キャストの必要性がなくなり、値の型のボクシングを減らすことができると書かれています。キャストだけでなく削除されたと思いましたか?誰か説明してくれませんか?

0 投票する
4 に答える
309 参照

c# - プリミティブ データ型を使用し、C# の文字列で使用するとボックス化が発生する

このようなものを使用すると、ボックス化操作 [パフォーマンスの低下] はありますか

それ以外の場合、これを使用すると、ボクシングは発生しません。

わずかなパフォーマンスの低下でも回避する必要があるため、最適なオプションを知りたいと思っています。また、パフォーマンスの低下に関する記述とそれを克服する方法について学ぶことができるように、コンテンツへのリンクも提供してください。