2020年11月03日
川俣晶の縁側ソフトウェアC# コーディング How To total 935 count

【入門級】整数配列[1,2,3]からループなしで文字列"1+2+3=6"を生成する

Written By: 川俣 晶連絡先

 整数配列[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

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?