問題タブ [casting]
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.
c# - キャストと変換は同じですか?
Jesse Liberty の Learning C# ブックの中で、彼は「あるタイプのオブジェクトを別のタイプのオブジェクトに変換できます。これをキャストと呼びます」と述べています。
以下のコードから生成された IL を調べると、キャストされた割り当てが変換された割り当てと同じことをしていないことがはっきりとわかります。前者では、ボックス化/ボックス化解除が発生していることがわかります。後者では、convert メソッドの呼び出しを確認できます。
結局、それはばかげた意味の違いにすぎないことはわかっていますが、変換するための別の単語をキャストしているだけです。意地悪をするつもりはありませんが、これに関する誰かの直感には興味がありません。意見はここでは考慮しません。キャストと変換が同じものであるかどうかを確認または否定する決定的な参照を誰かが指摘できますか?
ありがとうございました
rp
明示的/暗黙的に関するマットのコメントの後に追加されたメモ:
暗黙的/明示的な違いはないと思います。私が投稿したコードでは、どちらの場合も変更が明示的です。暗黙的な変換は、int に short を割り当てるときに発生するものです。
Sklivvz へのメモ:
私は、ジェシー・リバティの(それ以外の場合は、通常は明快で明快な)言葉遣いが緩いという私の疑いが正しいことを確認したかったのです。ジェシー・リバティは言葉遣いが少し緩いなと思いました。キャストはオブジェクト階層でルーティングされることを理解しています。つまり、整数から文字列にキャストすることはできませんが、System.Exception から派生したカスタム例外から System.Exception にキャストすることはできます。
ただし、int から文字列にキャストしようとすると、値を「変換」できなかったとコンパイラが通知するのは興味深いことです。思ったよりもジェシーが正解かも!
c# - インターフェイスへのバインド時のc#ダウンキャスト
ダウンキャスト以外のUIに基本クラスのリストをバインドするより良い方法はありますか?
java - Java で C# as-operator をエミュレートする方法
ClassCastException をスローする代わりに、型キャストで null 値を返す方が実用的な場合があります。C# には、as
これを行う演算子があります。ClassCastException を明示的にチェックする必要がないように、Java で利用できる同等のものはありますか?
c++ - ポインターを整数に変換する
既存のコードを 64 ビット マシンに適合させようとしています。主な問題は、ある関数で、前のコーダーが void* 引数を使用し、関数自体で適切な型に変換されることです。簡単な例:
もちろん、64 ビット マシンでは次のエラーが表示されます。
これを修正して、32 ビット マシンでもできるだけきれいに動作するようにしたいと思います。何か案が ?
c# - 数値をバイトにキャストする方法は?
C および C++ では、数値の末尾に「l」を付けることで、数値が「long」であることをコンパイラーに伝えることができます。例: long x = 0l;
数値がバイトであることを C# コンパイラに伝えるにはどうすればよいですか?
vb.net - 初心者: byte() を single() にキャスト/コピーする最速の方法
directx サウンド キャプチャの結果として byte() 配列が返されましたが、プログラムの他の部分では結果を single() として扱いたいと考えています。配列をアイテムごとに切り詰めることが最速の方法ですか、それとも賢い方法がありますか?
それを取得するコードは
バイト配列を作成しますが、Ctype は single を処理できますか? (注、私はそれを行う方法を理解できません!)
c# - C#での適切なnull許容型チェック?
わかりました、私の実際の問題はこれでした:私はIList<T>
. に到達したときCopyTo(Array array, int index)
、これが私の解決策でした:
これは私の元のコードで機能し、引き続き機能します。しかし、それには小さな欠陥があり、テストの構築を開始するまで明らかにされませんでした。具体的には次のようなものです。
これで、このテストに合格するはずです。ArgumentException
キャストできないくらい投げます。なんで?array[0] == null
. に設定されている変数をチェックすると、is
キーワードは常に false を返しますnull
。これは、null デリファレンスの回避など、さまざまな理由で便利です。型チェックのために最終的に思いついたのは次のとおりです。
これは正確にはエレガントではありませんが、機能します...もっと良い方法はありますか?
casting - Informix でのキャスト
Informix では、別の型と比較できるようchar(8)
に、型を型にキャストするにはどうすればよいですか?money
money
" tblAid.amt::money as aid_amt
" を使用しても機能しませんでした。" (tblAid.amt * 1) AS aid_amt
" を使用しても機能しませんでした。
java - COMオブジェクトがインターフェースを実装している場合、JIntegraを使用してJavaをチェックインする方法は?
私は JIntegra Java com ブリッジを使用しています。真のコクラスが不明な Object 型のオブジェクトがあります。そのオブジェクトを特定の COM インターフェイス (JIntegra によって生成されたプロキシ クラスを持つ) にキャストできるかどうかを確認する必要があります。
.net - データベースからデータを取得するときにキャストまたは変換しますか?
データベースから取得した DataTable 内のオブジェクトにアクセスする場合、オブジェクトを目的の型にキャストしない理由、または変換を使用する理由はありますか? 使用しているデータ型がわかっている場合はルールがキャストされ、データ型をそうでないものに変更しようとすると変換されます。列に格納されているデータ型がわかっていると仮定すると、キャストは適切に思えますが、これに依存できないことを意味する DB タイプの問題はありますか?