コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】ZString の Utf16ValueStringBuilder で ZString.Join を使いやすくする拡張メソッド

ソースコード

using Cysharp.Text;
using System;
using System.Collections.Generic;

public static class ZStringExt
{
    public static void AppendLine<T>
    (
        ref this Utf16ValueStringBuilder self,
        char                             separator,
        IEnumerable<T>                   values
    )
    {
        self.AppendLine( ZString.Join( separator, values ) );
    }

    public static void AppendLine<T>
    (
        ref this Utf16ValueStringBuilder self,
        char                             separator,
        ReadOnlySpan<T>                  values
    )
    {
        self.AppendLine( ZString.Join( separator, values ) );
    }

    public static void AppendLine<T>
    (
        ref this Utf16ValueStringBuilder self,
        char                             separator,
        params T[]                       values
    )
    {
        self.AppendLine( ZString.Join( separator, values ) );
    }
}

使用例

using Cysharp.Text;
using UnityEngine;

public class Example : MonoBehaviour
{
    private int[] list = new[] { 1, 2, 3 };

    private void Update()
    {
        var sb = ZString.CreateStringBuilder();

        sb.AppendLine( ',', list ); // ★

        var str = sb.ToString();

        Debug.Log( str );

        sb.Dispose();
    }
}

注意

f:id:baba_s:20200312143358p:plain

参照渡しの拡張メソッドを使用しているため using は使用できない