2017-08-04 13 views
-3

私はおそらく適切なタイトルを使用していませんでしたが、その用語についてはわかりません。C#、抽象クラスから派生型を見つけ出す方法は? (TextWriter)

私は抽象クラスであるTextWriterを使いたいと思っていました。

TextWriter writer = File.CreateText("path"); 

EDIT:StreamWriterタイプが必要であることをどのように知っていますか?私がTextWriterのコードから見ることができるのは、それが抽象であるということだけです。

+4

私はあなたの質問を理解していません。 - 「どのようなものを使うべきか」 – Jamiec

+0

'TextWriter'を使用しているだけのことはありますか? –

+0

私も。これらのクラスがすべて 'TextWrter'のインスタンスである限り、メソッドが' StreamQriter'または 'MyClass'を返すかどうかは気になりますか? – HimBromBeere

答えて

0

にはどうすればいいのStreamWriter型が必要であることを知っていますか?

まあ、StreamWriterは必要ありませんです。使用することはできますが、は必要ありません。

コンパイルタイプがTextWriterの変数を宣言すると、TextWriterという種類の変数を割り当てることができます。例えば、StringWriterをそこに入れることができます:

TextWriter writer = new StringWriter(new StringBuilder("Hello World!")); 

コンパイルには問題ありません。

重要なことは、そこに置く必要があるものではなく、あなたがしたいことです。ストリームに書き込む場合は、StringBuilderに書き込む場合はStringWriterに書き込む場合はそこにStreamWriterを書き込んでください。書き込みする場合は、自分のサブクラスを作成してそこに使用してください。

また、TextWriterも書く必要はありません。あなたは非常によく、このような何かを行うことができます。

StreamWriter writer = File.CreateText("path"); 

「私はちょうど私が欲しい、特定のタイプを指定することができた場合、何がTextWriterの使用です?」あなたは尋ねるかもしれない。

一般的に何かを行うメソッドを記述することもできます。 "Hello World"を書くのと同じですが、このメソッドはどこに書き込むかは気にしません。あなたがStreamWriterを渡すと

public static void WriteHelloWorld(TextWriter writer) { 
    writer.Write("Hello World"); 
} 

それがストリームに書き込みます。 StringWriterを渡すと、文字列などに書き込まれます。

+0

ありがとう、それは私が学びたいと思っているものに非常に近いです。だから、例えば、StringWriterを使うことができることをどのように知っていますか?これは私が求めているすべてのものです。コード自体でどのように伝えることができないのか分かりません。 – user970696

+0

@ user970696 'TextWriter'から継承したものはすべて使用できます。ドキュメントには、.NETフレームワークのどのタイプから継承されているかが示されています。https://msdn.microsoft.com/en-us/library/system.io.textwriter(v=vs.110).aspx 「継承階層」を参照してください。あなたは今理解していますか? – Sweeper

0

実際にはStreamWriterインスタンスが返されます。 msdnFile.CreateText Method (String)

このメソッドは、falseに設定アペンドパラメータでは、StreamWriter(文字列、論理値)コンストラクタのオーバーロードに相当します。

実際に抽象クラスのオブジェクトとして使用することをお勧めします。

あなたがwnat場合は、返されたインスタンスの種類を確認することができます。

TextWriter writer = File.CreateText("path"); 
Type type = writer.GetType(); //System.IO.StreamWriter in this case 
+0

@ user970696 'writer'インスタンスのタイプを示すコードを追加しました – meJustAndrew

+0

しかし、それは私が求めているものではありません。 StreamWriterが期待されていることをどうやって知っていますか?あなたはTextWriterのコードからどのように分かりますか?私はMSDNを見ていない限り、何を使うべきか分からなかった。 – user970696

関連する問題