問題タブ [upcasting]

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 投票する
8 に答える
1399 参照

c# - C#でアップキャストし、派生タイプに基づいて特定のメソッドを呼び出します

私にはいくつかのクラスがあり、すべて同じ基本タイプから派生しています。

それらの数はリストに保存されます。

いつものように、これらのタイプはそれぞれ異なる方法で処理する必要があります。これで、それらを処理するための2つのメソッドと、パラメーターとしてベースタイプを受け取る1つのメソッドがあります。

現在、私のHandleAllTypesは次のようになっています。

今これはがらくたです。のような方法はありますか

MSDNやその他のソースを検索しても、何も見つかりませんでした。

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

wcf - WCFシリアル化のための派生クラスから基本クラスへの変換

私には2つのクラスがあります...

...そして私はWCFサービスを持っています:

Aのリストをクライアントに送信する必要がありますが、Bのリストしかありません。「_c」フィールドは気にしません。私はこれが次のように単純だと思ったでしょう:

ただし、オブジェクトの派生型は、リストの基本型インスタンス内に格納されます。Cはシリアル化できないため、WCFは逆シリアル化を試みて失敗するようです(無視済みとしてマークした場合でも)。クライアント側で応答がなく、サーバー側のメソッドが失敗します。

ただし、タイプAを作成して送信(およびクライアントで受信)することはできます。

(動作する)非常に価値のあるものに足りない方法はありますか?

と ..

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

c++ - 許容できるプログラミング手法-変換とアップキャスト

次の許容可能なプログラミング手法は次のとおりです。

許容できる/許容できない理由は何ですか?

(TestAでTestB代入演算子を作成することについて、明白な提案をしないでください。これは、アップキャストおよび/または変換演算子をこの方法で使用する必要があるかどうかに関する質問です)。

また、質問の賛成/反対のコメントにフィードバックを残して、将来質問を改善できるようにすることをお勧めします。

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

java - 実際のタイプによる方法の使用

次のように、オブジェクトの実際のタイプを使用して、使用するメソッドを定義できることを学びました。

これでメソッドを使用する必要がありますbla(String x)が、代わりにコンパイラエラーが発生します。私は理由を知っています:タイプfooが現在であるためObject。現在正しく行っているかどうかはわかりませんが、Javaは実際のタイプ(または特定のタイプ)でメソッドを選択するので、ダウンキャストすると代わりにObject選択されます。メソッドが指定されています。StringObject

または、メソッドでタイプを判別する唯一if(foo instanceof xxx)の方法ですvoid bla(Object x)?

PS:これについて誤解しないでください:メソッドをオーバーロードできるという意味ではありません。つまり、(定義されたタイプではなく)実際のタイプに基づいてメソッドを選択したいということです。

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

c++ - 「アップキャスト」のデメリットは?

抽象クラスの目的は、開発者が基本クラスのオブジェクトを作成してからアップキャストできないようにすることではありませ

さて、アップキャストが必要なくても、私はまだそれを使用していますが、それは何らかの形で「不利」であることが証明されていますか?

より明確にする:
C ++での思考から:

多くの場合、設計では、基本クラスがその派生クラスのインターフェイスのみを提示するようにします。つまり、誰もが実際に基底クラスのオブジェクトを作成するのではなく、そのインターフェイスを使用できるようにアップキャストするだけです。これは、そのクラスを抽象化することで実現されます。

アップキャストとは、次のことを意味します。baseClass *obj = new derived ();

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

java - Java では、文字の整数への型キャストが符号ビットを拡張しないのはなぜですか

Java では、ビット単位の操作によって型が整数にキャストされ、符号拡張も発生します。たとえば、次のことが予想されます。

Java では、文字は UTF-16 でエンコードされ、各ユニットは 2 バイトで表されます。

32767 ではなく -1 を期待していました。ビット演算が適用される前の型キャスト中に符号が拡張されないのはなぜですか? 何か案は?

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

java - Javaオブジェクト参照による2つのプロパティの比較

私のクラスの1つでequalsプロパティをオーバーライドする場合、そのように実装することは可能ですか?識別子などの問題のプロパティは、String、boolean、Date、Set、またはLinkedHashSetである可能性があります

なぜまたはなぜそうではないのですか?

0 投票する
3 に答える
10701 参照

c# - オブジェクトをアップキャストする

オブジェクトをアップキャストするための可能なタイプを取得する方法を探しています。例: Control を継承する MyControl タイプのコントロールがあります。ここで、タイプ MyControl のオブジェクトが Control にダウンキャストされたときに、それが最上位のオブジェクト タイプであるかどうか、またはアップキャストできるタイプ (この場合は MyControl) をいつ取得するかを調べる方法があります。 ? MyControl (リフレクション付き) にアップキャストし、リフレクション付きのプロパティを取得します。しかし、私はこれをしなければならない場所で MyControl を知りません。

MyControl は、Visible を new で実装しています。control.Visible = true を呼び出すと、Control の Visible が呼び出されますが、MyControl の Visible を呼び出す必要があります。

ご協力いただきありがとうございます。

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

xml - Word から XML への変換におけるハイパーリンクの問題を修正

クライアントの Word ドキュメントを XML に変換するには、2 段階のプロセスを使用します。最初の段階では、upCast を使用して XML ファイルを作成し、カスタム XSLT を実行して出力をクライアントの DTD に変換します。このプロセスは、何千ものファイルで正常に実行されています。

現在、脚注が適切にリンクされていないファイル (ソース文書とその文書の翻訳) がいくつかあります。脚注は、文書の最後にある番号付きリストへの上付きの相互参照です。検証中に、私はこれを取得します:

相互参照はその識別子を指していますが、下部の番号付きアイテムにはそれがありません。相互参照を置き換え、番号付きリスト全体を置き換えてみました。エラーは解決しません。コードの問題だと思いますが、同じヴィンテージ (つまり、2003 年と思われる同じバージョンの Word で最初に作成された可能性が高い) を参照している他のドキュメントは問題なく動作します。この問題を解決するにはどうすればよいですか?

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

c++ - 著者が話している望ましくない結果とは何ですか?

この例は、Bruce Eckel の "Thinking in C++" の第 14 章、「アップキャストとコピー コンストラクター」から引用したものです。

著者は、このコードに関して次のコメントを作成します。

「子の operator<< は、その中の親部分の operator<< を呼び出す方法のために興味深いものです: Child オブジェクトを Parent& にキャストすることによって (参照の代わりに基本クラスオブジェクトにキャストする場合)通常、望ましくない結果が得られます):

上記の命令を次のように置き換えて、プログラムも実行します。

プロプラムは問題なく実行されますが、予想される違いは 1 つだけです。ここで、Parentコピー コンストラクターが再度呼び出されて、引数cがにコピーされますParent::operator<<()

では、著者が話している望ましくない結果とは何でしょうか?