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

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

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

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

Q&A

解決済

5回答

1340閲覧

C#のちょっと不思議なカンマの扱い

otftrough

総合スコア476

C#

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

0グッド

0クリップ

投稿2019/04/25 08:28

C#で配列を作る場合に、何故エラーが出ないのか不思議なことがあります。

C#

1var example = new int[] { 1, 2, 3, 4, }; 2//Lengthは4になる

他の言語でも同様かは試していませんが、何故これでエラーを出さないのでしょうか。

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

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

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

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

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

YAmaGNZ

2019/04/25 09:00

「他の言語でも同様かは試していませんが」とありましたので、 VB.NETではコンパイルエラーとなります。
guest

回答5

0

ベストアンサー

https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/language-specification/arrays#array-initializers

こちらに

array_initializer : '{' variable_initializer_list? '}' | '{' variable_initializer_list ',' '}' ;

と書いてあり、"," で終わっても良いという言語仕様が明示されています。

投稿2019/04/25 08:47

tetsunosuke

総合スコア1292

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

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

0

出さない仕様にしているからです。
この場合はすべてを一行に書いていますが、一行に一つ要素を書く場合、例えばコピペで順番を変えてもカンマを書き換えなくてよいようになっています。

投稿2019/04/25 08:33

Zuishin

総合スコア28660

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

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

0

今後ぐぐったり話すためのキーワードとして。こういう言語仕様のことを
「dangling comma」「trailing comma」「末尾のカンマ」
などと表現することが多いようです。

投稿2019/04/26 02:35

yuba

総合スコア5568

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

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

otftrough

2019/04/26 09:04

ありがとうございます。
guest

0

1行に書くとあまりメリットを感じないと思いますが、

C#

1var example = new int[] { 2 1, 3 2, 4 3, 5 4, 6 };

で、最後に5,を追加したり、最後の4,を削除したり、2,4,の後に移動したりすると、この仕様の便利さを感じると思います。多くの言語でそうなっています。

また、プログラムをプログラムで生成する場合、「データを出力しながら、最後だけカンマを書かない」という処理にするのは面倒です。この場合は1行かも知れませんね。

投稿2019/04/25 13:04

otn

総合スコア84499

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

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

0

まあ、ほかの言語でも同じようなことが起こりえます。

JavaScript

1var example = [ 1, 2, 3, 4, ]; 2console.log(example.length); // 4

投稿2019/04/25 12:05

x_x

総合スコア13749

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

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

pepperleaf

2019/04/25 13:56

昔の Cは許してくれなかったが、 今、VC++2017 (cl test.c) でコンパイルしたら、OKの模様。
tetsunosuke

2019/04/26 06:20

IEではエラーになる思い出...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問