예제 #1
0
파일: ZString.cs 프로젝트: to11mtm/ZString
        /// <summary>Concatenates the elements of an array, using the specified seperator between each element.</summary>
        public static string Join <T>(string separator, IEnumerable <T> values)
        {
            var sb = new Utf16ValueStringBuilder(true);

            try
            {
                var isFirst = true;
                foreach (var item in values)
                {
                    if (!isFirst)
                    {
                        sb.Append(separator);
                    }
                    else
                    {
                        isFirst = false;
                    }
                    sb.Append(item);
                }

                return(sb.ToString());
            }
            finally
            {
                sb.Dispose();
            }
        }
예제 #2
0
파일: ZString.cs 프로젝트: piti6/ZString
        static string JoinInternal <T>(ReadOnlySpan <char> separator, IList <T> values)
        {
            var count = values.Count;

            if (count == 0)
            {
                return(string.Empty);
            }
            else if (typeof(T) == typeof(string) && count == 1)
            {
                return(Unsafe.As <string>(values[0]));
            }

            var sb = new Utf16ValueStringBuilder(true);

            try
            {
                for (int i = 0; i < count; i++)
                {
                    if (i != 0)
                    {
                        sb.Append(separator);
                    }

                    var item = values[i];
                    if (typeof(T) == typeof(string))
                    {
                        var s = Unsafe.As <string>(item);
                        if (!string.IsNullOrEmpty(s))
                        {
                            sb.Append(s);
                        }
                    }
                    else
                    {
                        sb.Append(item);
                    }
                }
                return(sb.ToString());
            }
            finally
            {
                sb.Dispose();
            }
        }
예제 #3
0
파일: ZString.cs 프로젝트: to11mtm/ZString
        /// <summary>Concatenates the elements of an array, using the specified seperator between each element.</summary>
        public static string Join <T>(char separator, ReadOnlySpan <T> values)
        {
            var sb = new Utf16ValueStringBuilder(true);

            try
            {
                for (int i = 0; i < values.Length; i++)
                {
                    if (i != 0)
                    {
                        sb.Append(separator);
                    }
                    sb.Append(values[i]);
                }
                return(sb.ToString());
            }
            finally
            {
                sb.Dispose();
            }
        }
예제 #4
0
파일: ZString.cs 프로젝트: to11mtm/ZString
        /// <summary>Concatenates the elements of an array, using the specified seperator between each element.</summary>
        public static string Join <T>(char separator, List <T> values)
        {
            var sb = new Utf16ValueStringBuilder(true);

            try
            {
                var count = values.Count;
                for (int i = 0; i < count; i++)
                {
                    if (i != 0)
                    {
                        sb.Append(separator);
                    }
                    sb.Append(values[i]);
                }
                return(sb.ToString());
            }
            finally
            {
                sb.Dispose();
            }
        }
예제 #5
0
파일: ZString.cs 프로젝트: piti6/ZString
        static string JoinInternal <T>(ReadOnlySpan <char> separator, IEnumerable <T> values)
        {
            var sb = new Utf16ValueStringBuilder(true);

            try
            {
                var isFirst = true;
                foreach (var item in values)
                {
                    if (!isFirst)
                    {
                        sb.Append(separator);
                    }
                    else
                    {
                        isFirst = false;
                    }

                    if (typeof(T) == typeof(string))
                    {
                        var s = Unsafe.As <string>(item);
                        if (!string.IsNullOrEmpty(s))
                        {
                            sb.Append(s);
                        }
                    }
                    else
                    {
                        sb.Append(item);
                    }
                }

                return(sb.ToString());
            }
            finally
            {
                sb.Dispose();
            }
        }
예제 #6
0
        public override void Write(char value)
        {
            AssertNotDisposed();

            sb.Append(value);
        }