困っていること
- System.Console.Write
- System.Console.ReadLine
が動いていないように見えます。
動いてたら、名前を入力し、変数に代入して、表示してくれるはずです。
環境
ローカルのDockerでdotnetcoreのコンテナを作成し、
VSCodeのRemoteContainerという拡張機能で、コンテナを開いている状態です。
(こちらの記事(Qiita)を参考にしました)
実行したコード
C#の参考書に書いているコードを少しだけ変えたものです。
(変える前もWrite, ReadLineともに動いていない)
F5キーで実行しました。
実行時のログが、上記の添付画像になります。
サンプル1は表示されているので、Mainが呼ばれ、
WriteLineが実行されていますが、
Write, ReadLine, その後のWriteLine が実行されてないようです。
C#
1// Sample1.cs 2 3class Sample1 4{ 5 static string str = "サンプル1"; 6 7 static void Main() 8 { 9 System.Console.WriteLine( str ); 10 System.Console.Write( "名前は?≫ " ); 11 string name = System.Console.ReadLine(); 12 System.Console.WriteLine( $"ようこそ、{name}さん !" ); 13 } 14} 15
追記
コメントで、launch.jsonを以下の用に修正するといいとお聞きして、
試してみたら、意図した動きになりました。
atmarkit参考サイト
json
1 // 変更前 2 // "console": "internalConsole", 3 4 // 変更後 5 "console": "integratedTerminal",
前のスレッドでも言われてたように素直に Visual Studio を使いましょう。Visual Studio Code は所詮エディタです。
本格的なC#開発であれば、いずれにせよIDEの使用は避けられないので、自力で環境の問題を解決できないならVSCodeはやめといたほうが良いと思います。普通の人はC#開発でVSCodeをメイン開発環境に使わないので、VSCodeに依存した問題なら回答は殆どつかないでしょう。
また、仕事であればC#の文法だけ覚えても使い物にならないので、結局VisualStudioでの開発を覚え直す事になり、単に遠回りしてるだけです。
自分も素直に Visual Studio を使った方が良いとは思いますが、もしかしたら "console": "integratedTerminal" とすると良いかも?
https://www.atmarkit.co.jp/ait/articles/1709/01/news034_3.html
とりあえず、改行付きのWriteLineで出力されているのであれば、出力がバッファリングされていて出力されず、ReadLineで入力待ちになっているだけかも?
そのまま名前を入力すれば見た目、進むかもしれないし、WriteをWriteLineに変えてみてはどうでしょう。
最近は基本を無視して応用に手を出す人ばっかり。
人に尋ねて出した結果を自分の成果と勘違いし、それが自分の力になったと思いあがる。
ただ人がやってくれただけで何も身についてないのに。
そしてこういうことを言うと「建設的な意見を言え」と意味不明なことを言い始める。
基礎なしに何も建設できるものか。
ちなみに、そのリンク先のQiitaの記事を書いてるかずき氏も、他の記事のスクリーンショットを見ればVisualStudioを常用しているのが判ります。
また、下記の記事ではこのように言っています。
[Visual Studio Code で Windows アプリ開発したいんだけど?]
https://qiita.com/okazuki/items/7114ce17ef8cd3ec84ad
> 先に結論
> Visual Studio 2019 使いましょう。
深い開発知識を持っておられる方ですが、あくまでVSCodeのC#開発関連記事は趣味・娯楽的なものでしょう。不自由なのは理解しているけれど、自力で解決できるスキルがあるから出来る訳です。
VSCodeでもHello world出力する程度ならそれほど苦労はしないでしょうが、ちょっと突っ込んだ事やろうとすれば途端に厳しくなると思われます。デザイナーや、高度なデバッグ機能もありません。
> 本格的なC#開発であればIDEの使用は避けられない
> 結局VisualStudioでの開発を覚え直す事になる
無理にVSCodeでやって、覚え直すくらいなら、
素直にVSCode使った方がいいかなと思いました。
> ReadLineで入力待ちになっているだけかも?
そうっぽいです。下記のように(`integratedTerminal`)すると、
入力待ちで、入力できるようになりました!
> もしかしたら "console": "integratedTerminal" とすると良いかも?
そのもしかしたら が もしか しました!
変更前 は "console": "internalConsole",
変更後 は "console": "integratedTerminal",
で意図した通りの動きになりました!
> リンク先のQiitaの記事を書いてる ...
記事を書いている方の他の記事まで読んでいただき、
VisualStudioを使うべき根拠を示していただき、ありがとうございます。
ハマった時に自己解決できないなら、VSCodeでやるのは厳しいかもしれませんし、
デバッグしたい時や、突っ込んだことをやる時に苦労するのは嫌だと思いました。
回答1件
あなたの回答
tips
プレビュー



