初心者です。
■わからないこと
・なぜFileStream fs = File.OpenWrite(path);でファイルが作成されるのかがわかりません。どのようなことがメソッド内部で起きているのか知りたいです。
前提・実現したいこと
■実現したいこと
・ClientServerのディレクトリに html.text を生成したが内部で何が起こっているのかしりたい
・クラスのインスタンスは他クラスのメソッドで生成できる意味を理解したい
調べると
「FileStreamのインスタンスはFileクラスのメソッドでも生成が可能」だとでてきました
上記が理解できません。
そもそもFileStream クラスの中かつ継承しているクラスに FileクラスやOpenWriteメソッドがないのに使えるかがわかりません
発生している問題・エラーメッセージ
class TcpServer { public static void CreateFile(){ string path = @"C:\個人情報\個人情報\Projects\C#\ClientServer\html.text"; FileStream fs = File.OpenWrite(path); } }
試したこと
ここに問題に対して試したことを記載してください。
インスタンスの作成方法を調べた
ClassName instanceName = new ClassName();
instanceName.MethodName();
静的メソッドの場合
ClassName.MethodName();
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
IDE:vscode
言語:C#
> ・なぜFileStream fs = File.OpenWrite(path);でファイルが作成されるのかがわかりません。
?? そういう動きになるようにメソッドが設計され、実装されているのですが。
[File.OpenWrite(String) メソッド]
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.file.openwrite?view=netframework-4.8
そういう答えではなく、どうしてそのような動きがメソッド内部で実現できるのが分からないので教えて欲しい、ということなのでしょうか。
> ・ClientServerのディレクトリに html.text を生成したい
これはもうできているのではないですか?
>そういう答えではなく、どうしてそのような動きがメソッド内部で実現できるのが分からないので教え
>て欲しい、ということなのでしょうか。
おっしゃる通りです。
メソッドの呼び出し方法で勉強していたのは
①インスタンスを作成してメソッドを呼び出す
②静的メソッドの場合クラス名.メソッド名
上記に当てはまらないのでどうなっているのか知りたいのが質問の趣旨です。
修正いたします。
> ・ClientServerのディレクトリに html.text を生成したい
できていますのでこれも修正いたします。
> ②静的メソッドの場合クラス名.メソッド名
少なくともこれはリファレンスにあるとおり、当てはまっていますよ。Fileクラスのpublic static なOpenWrite()メソッドです。
尚、[Microsoft .NET Reference Source]を辿れば実装を追うこともできます。これでは不満、あるいは難しいでしょうか。
https://referencesource.microsoft.com/#mscorlib/system/io/file.cs,1c7421e464f67b7e
ありがとうございます!!!
public static FileStream OpenWrite(String path) {
return new FileStream(path, FileMode.OpenOrCreate,
FileAccess.Write, FileShare.None);
}
上記のため
FileStream fs = File.OpenWrite(path)をすると
OpenWrite()メソッドの中でインスタンスが生成されている認識で良いでしょうか。
ベストアンサーは gentaro さんの回答に付けるべきと思いますが? そもそもの疑問は「new FileStream() がどこにも見当たらないのに何故 FileStream のインスタンスができるのか?」ということだったようだし。
回答3件
あなたの回答
tips
プレビュー