質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

1244閲覧

実行時引数を使用する際のコードの書き方が知りたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2020/04/13 06:27

編集2020/04/13 06:55

前提・実現したいこと

プログラミング未経験で今月4月1日にIT企業に就職しました。
Visual Studio Express 2017でC#を使っています。
実行時引数(=コマンドライン引数?)を使用する際のコードの書き方が知りたいです。
コマンドラインに"Hello World"をN個表示するプログラムが書きたいです。

発生している問題・エラーメッセージ

以下のソースコード3行目
int N = int.Parse(args);
のargsに赤い波線が引かれ「引数1: は'string[]'から'string'へ変換することはできません。」とでてきます。

聞きたいことは

  1. 実行時引数に5を入力したら、このコードにおいてargs=5となるのか。
  2. argsの変数の型はなぜstring配列になっているのか。
  3. なぜ上のようなエラーがでるのか。

該当のソースコード

static void Main(string[] args) { int N = int.Parse(args); for (int i = 0; i < N; i++) { Console.WriteLine("Hello World"); } }

以上です。
インターネットで調べていますがどのページを見ても理解できません。
何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/04/13 06:30

もしかして、C#じゃないでしょうか
退会済みユーザー

退会済みユーザー

2020/04/13 06:31

ご回答ありがとうございます。 C#です。
kaina

2020/04/13 06:51

コードは以下のように「```」に囲まれた範囲に書くようにしてください。 ``` コード ```
退会済みユーザー

退会済みユーザー

2020/04/13 06:54

ご指摘ありがとうございます。承知いたしました。
退会済みユーザー

退会済みユーザー

2020/04/13 07:03

>argsの変数の型はなぜstring配列になっているのか。 ですが、これはそういうもんだと思うしかないのでしょうか?配列を外したり、int型にしたらいけないのでしょうか。
退会済みユーザー

退会済みユーザー

2020/04/13 07:05

すみません、↑は下の回答に対する質問です。削除リクエストしました。
Zuishin

2020/04/13 07:12

なぜそこまで労力を省こうとするのか理解できませんが、args をすべて表示するプログラムを一つ作り、コマンドライン引数を変えるとどうなるか試してみれば一発でわかることだと思います。
guest

回答2

0

1.実行時引数に5を入力したら、このコードにおいてargs=5となるのか。

なりません。

2.argsの変数の型はなぜstring配列になっているのか。

コマンドライン引数はN個設定できる為、配列で受け取る必要があります。

3.なぜ上のようなエラーがでるのか。

エラー内容通りですが、コマンドライン引数の型がstring型ではなく、
string配列型で定義してあるからです。

投稿2020/04/13 07:07

kaina

総合スコア418

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/13 07:17

ご回答ありがとうございます。 Main関数では(string[] args)と決まっているんですね。 ここを変えてはいけないので、 関数の中で型を変更しないといけないということですね。
kaina

2020/04/13 07:23

はい、その通りです。
guest

0

ベストアンサー

コマンドライン引数 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

まずはこれを読んでみよう。
あなたの疑問の解答が書かれてます

これでわからないなら、また聞いていただけるとよろしいかと。

#んで、タグをC#に修正しといてくださいな

投稿2020/04/13 06:39

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/13 06:40

ご回答ありがとうございます。 タグすみません。直しておきます。
y_waiwai

2020/04/13 07:09

そう決まってるから、ということですね。 決まってるもんをあなたが勝手に変えるというわけにはいきません 複数の引数を渡すために配列になっとります そして、文字列で渡されますんで、数値にするなら変換してやらないといけません(変換法もぐぐればでてきます)
退会済みユーザー

退会済みユーザー

2020/04/13 07:14

ありがとうございます。そうだったのですね。 変換法について、調べてみます。 >なぜ上のようなエラーがでるのか。 は、stringで定義したargsをint型に変換しないといけないからということですね。
y_waiwai

2020/04/13 07:18

> int N = int.Parse(args); これがエラーになるのは、argsが配列だからです やるなら、 int N = int.Parse(args[0]); としましょう。 最初の引数をintに変換してます。 その次の引数を、という場合は args[1] とします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問