整数配列[1,2,3]からループなしで"1+2+3=6"を生成することはできるでしょうか?
もちろん、配列の数値が違っていても、内容の数が違っていても処理可能でなければなりません。
これは2つに分割して考えると可能です。
まず、"1+2+3"の部分はstring.Joinメソッドで可能です。
次に合計値はLINQのSumメソッドを使えば一発で出ます。
罠の数々 §
- string.Joinメソッドは通常カンマなどの区切り文字を挿入するために使うが、"+"でも挿入できる
参考リンク §
String.Join メソッド
Enumerable.Sum メソッド
どうしてStringクラスのJoinメソッドに文字列ではなく整数の配列を渡して動作しているのだろうか。その理由を上のリンクを辿って調べてみよう。ヒントは【Joinメソッドに整数の配列を受け取りバリエーションはないが、しかし……】である。
リポジトリ §
https://github.com/autumn009/cshowto
Loopless §
using System;
using System.Linq;
class Program
{
private static void sub(int[] array)
{
string result = $"{string.Join('+', array)}={array.Sum()}";
Console.WriteLine(result);
}
static void Main()
{
int[] array1 = { 1, 2, 3 };
sub(array1);
int[] array2 = { 5, 8, 2, 11 };
sub(array2);
}
}
実行結果
1+2+3=6
5+8+2+11=26