/// <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(); } }
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(); } }
/// <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(); } }
/// <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(); } }
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(); } }
public override void Write(char value) { AssertNotDisposed(); sb.Append(value); }