質問: static void Main(string[] args) のコマンドライン引数の役割が知りたいと思います。 このプログラムの1つ目の役割は、プログラムの開始部分のメソッドということは理解しています。ただ、コマンドライン引数がなぜ必要か分からなかったので、argsの引数に設定した上で、以下のプログラムの実行をしたいと思っています。Visual Studio上で、ファイル名はProgram.csです。 Console.WriteLine(args.Length); 引数を aaa bbb ccc ddd とします。 1コマンドライン引数は、「プログラム名の後に続けて入力した文字列」とのことでしたので、ターミナル上で、「Program.csのパス aaa bbb ccc ddd」と打ったのですが、コマンドが見つからないということでしたが、実行コマンドがわかりません。 2コマンドライン引数のargsを設定する時、以下のtest.rtfのファイルを作りました。 test aaa bbb ccc ddd このファイルとProgram.csをどう関連付けさせて、ターミナルにコマンドライン引数の要素の「4」を出せれば良いのでしょうか? 以下を参考にしています。 https://ufcpp.net/study/csharp/st_command.html 1と2のどちらかで、解法があれば教えていただけると助かります。
回答: え? C#ってコンパイルしませんか? するなら csファイルじゃなくて exeファイルのほうですよ。 > > 1コマンドライン引数は、「プログラム名の後に続けて入力した文字列」とのことでしたので、ターミナル上で、「Program.csのパス aaa bbb ccc ddd」と打ったのですが、コマンドが見つからないということでしたが、実行コマンドがわかりません。 > > > とありますが、もしかして、 C:/(~略~)/Desktop がカレントディレクトリになっているのに、 D:/csharp/project1 のProgram.cs ってのを開こうとしているとか? (しかもパスじゃなくてファイル名を渡しただけとか) カレントディレクトリを同じにしてみてください。 参考1 っていうか、質問の参考資料に > > 以下のようにして(ただし、test.exeという名前で作成した実行ファイルを作成したとします) 実行すると、 > > > (from コマンドライン引数 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C ) とありますが。 todo: * 実行ファイルのパスとカレントディレクトリのパスを確認すること * 拡張子を確認すること [追記1] コマンドライン引数は、そのソフトに汎用性を持たせるためのものです。 GUI (Graphical User Interface) なら 視覚的に操作できるので、問題はなさそうですが、 CUI (Character User Interface) の場合、プログラムがデータを決めることになります。 汎用性がないので、コマンドプロンプトで起動するときに 情報を渡して起動する。 これのためのものです。 Windowsのコマンドプロンプトだと CDコマンドがありますよね? これを ``` CD ``` とだけ打つと現在のディレクトリ ( カレントディレクトリ ) が表示される。 例: ``` C:/testProjects> CD C:/testProjects C:/testProjects> ``` でもこれに ディレクトリ名かディレクトリパスを渡すとその場所に行く( カレントディレクトリの変更 )。 例: ``` C:/testProjects> CD csharpCodes C:/testProjects> CD javaCodes 指定されたパスが見つかりません。 ``` DIRコマンドもそうですね。 ``` C:/testProjects> DIR rem ここに一覧表示 C:/testProjects> DIR *project1* /S /B rem ここに"project1" を含むパスの一覧を表示 ``` 参考: 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 [追記2] そうそう、忘れてた。 ドライブ( C: とか ) から開始するようなパスを**絶対パス**、カレントディレクトリから見たパスを**相対パス** と言います。 詳しくは検索してみてください。